2
如果我運行下面的查詢,我得到預期的結果:分組通過數字或首字母
SELECT upper(substr(columnname, 1, 1))
FROM table
GROUP BY upper(substr(columnname, 1, 1)).
我爲每首字母組從A到Z和0到9。但我想什麼我得到的是像「0-9」,「AC」,「DF」等組合。我不知道如何分組。有誰可以給我一個提示如何開始請嗎?
如果我運行下面的查詢,我得到預期的結果:分組通過數字或首字母
SELECT upper(substr(columnname, 1, 1))
FROM table
GROUP BY upper(substr(columnname, 1, 1)).
我爲每首字母組從A到Z和0到9。但我想什麼我得到的是像「0-9」,「AC」,「DF」等組合。我不知道如何分組。有誰可以給我一個提示如何開始請嗎?
一個想法可能是創建一個用戶定義的函數,它接收一個字母並返回一個字符串與該字母所屬的組。
如果名稱功能「getGroupFor」和它的作品,因此:
getGroupFor('A') returns 'A-C'
getGroupFor('B') returns 'A-C'
... (and so on)
然後你就可以通過該函數的輸出改變你的選擇組。
SELECT getGroupFor(upper(substr(columnname, 1, 1))) FROM table GROUP BY getGroupFor(upper(substr(columnname, 1, 1)))
您可以找到如何看待這個問題的其他創造SQLLite用戶定義的函數:
How to create custom functions in SQLite
另一種方法是創建一個表,可以映射字母不超過letter組,然後通過「letter-group」列而不是單個字母來加入表和組。
這些「超級羣體」是如何確定的?它們是靜態的並且事先已知,或者它們以某種方式由數據驅動? – Stan