2010-11-17 28 views
6

我在SQLite的以下查詢:比較字符串作爲號碼的SQLite3

SELECT * FROM t1 ORDER BY t1.field 

哪裏t1.field是包含數字的文本列。強迫SQLite將t1.field的值視爲數字而不是字符串(不做ALTER TABLE)是否可行?現在排序是一個純字符串,所以10先於2.

謝謝。

回答

16

好了,找到了解決辦法:

SELECT * FROM t1 ORDER BY t1.field + 0 

+ 0部分似乎強制轉換爲編號

+0

感謝你幫我,出來被你使用SQLite的上什麼平臺上的興趣? – 2013-10-21 19:30:59

+7

SELECT * FROM t1 ORDER BY CAST(t1.field AS INTEGER) – 2013-10-29 10:16:28

+0

您甚至可以對混合數據進行排序。如果使用'ORDER BY t1.field + 0,t1.field',這將首先對所有數字進行排序,然後將所有不能轉換爲數字的字符串 - >'[「no」,「yes」,「1」 「5」,「10」,「50」]' – relet 2014-11-03 12:33:21