2015-05-04 46 views
0

我一直在試圖讓sqlite的名字按以下順序SQLite的順序由AABBCC

AABBCCDD ...... ZZ

,但我已經得到最接近訂購了一套條目正在使用COLLATE NOCASE獲取不區分大小寫的排序。

我的條目是

Addy|2000-01-22T16:06:14.155Z 
alice|2000-01-22T16:06:20.514Z 
billyRay|2000-01-22T16:06:36.175Z 
Bobby|2000-01-22T16:06:26.868Z 
claus|2000-01-22T16:06:52.531Z 
CoffinLLC|2000-01-22T15:33:11.235Z 
Default|2000-01-22T15:55:12.168Z 

我試圖在sqlite3的命令行下面的select語句來實現我的目標,但沒有成功。

select * from t1 order by name COLLATE NOCASE asc; 
select * from t1 order by name COLLATE NOCASE, name asc; 
select * from t1 order by lower(name), name asc; 
select * from t1 order by name, lower(name) asc; 
+0

'選擇*從訂單(a,1,1),lower(substr(a,2,1)),substr(a,2,1);'這隻會檢查前兩個字符 – cshu

+0

我很好奇爲什麼這隻適用於單個字符,if我試着從t1命令中選擇* by lower(name),substr(name,1,1)。我沒有得到正確的結果。你的解決方案有效,但並不是一個可行的實施。 – JME

+0

這只是SQLite不支持你想要的排序規則。 SQLite更喜歡最小化。默認排序規則是「A cshu

回答

0

基於@ Griddoor的初步意見,我嘗試了一些變化和下面出現由低(SUBSTR(A,1,1)),SUBSTR工作

select * from t1 order by lower(substr(name,1,1)), name;