我正在使用FMDB存儲的書籍必須字母數字排序的標題列表的iOS應用(阿爾法第一,第二號)。但是,我還必須忽略非字母數字的主要字符,例如星號或括號。我也必須忽略「The」。另外,這個排序的數據將顯示在一個索引的UITableView上,所以我需要能夠得到主要字符的列表和每個章節中的書名。SQLite的 - 排序的字母數字而忽略特殊字符和「的」
例 -
這本書的標題列表:
"A Title 1", "A Title 2", "The A Title 3", "B Title 1", "B Title 2", "B Title 3",
"*B Title 4", "C Title 1", "(The) C Title 2", "3 Title 1"
從這個名單我會算4節把標題中( 'A', 'B', 'C' ,'3')。我還會統計每部分的書籍數量('A'-3書籍','B'-4書籍','C'-2書籍','3'-1書籍)。使用this tutorial我能夠設置章節和索引,但在處理諸如「The A Title 3」,「* B Title 4」和「(The)C Title 2」等標題時遇到問題。
目前,這款本的說法,我使用:
SELECT DISTINCT UPPER(SUBSTR(BookTitle, 1, 1)) AS Section,
COUNT(BookTitle) AS SectionCount
FROM BookTable
GROUP BY Section ORDER BY IFNULL(Section + 1, 0), Section
這將返回字母數字排序的部分名單和書籍進入每個部分的數量。問題是我的'T'部分有太多的書,因爲它將所有帶有「The」的書作爲主角。更不用說我想要忽略這些特殊字符的部分,如<或*。我想我需要修剪任何非字母數字字符和任何「The」的出現,但我不知道如何將它集成到我的查詢中,因爲它現在是。
我希望這足夠詳細。請隨時要求我澄清任何事情。一如既往,先謝謝你。
您通常需要創建第二個「已清理」標題列。它可以純粹用於查詢,然後在顯示結果時返回原始列。 – 2012-07-15 19:05:11
@HotLicks是的,這就是我的想法。我只是不確定所需的語法或在哪裏可以找到SQLite函數的完整列表。 – Squatch 2012-07-15 19:19:24
您不需要任何新語法就可以將另一列添加到數據庫中。只需在創建第一列數據時創建第二列數據,並將兩者一起插入。然後,而不是搜索第一個匹配,搜索第二個。但在您檢索的列中包含第一列。 – 2012-07-16 00:58:46