在SQLite3中将字符串作为数字进行比较

11

我在SQLite中有以下查询:

SELECT * FROM t1 ORDER BY t1.field

在SQLite中,t1.field 是一个包含数字的文本列。是否有可能强制SQLite将t1.field的值视为数字而不是字符串(而不进行ALTER TABLE操作)?目前的排序是纯字符串排序,所以10排在2之前。

谢谢。

1个回答

25

好的,找到了一个解决方案:

SELECT * FROM t1 ORDER BY t1.field + 0

+ 0 部分似乎强制将值转换为数字


谢谢,这对我很有帮助。顺便问一下,你在哪个平台上使用SQLite? - S-K'
13
按照将t1.field转换为整数后的值对t1表进行排序,查询所有列。 - Martin Ždila
你甚至可以对混合数据进行排序。如果使用 ORDER BY t1.field + 0, t1.field,那么它将首先对所有数字进行排序,然后对无法转换为数字的所有字符串进行排序 -> ["no", "yes", "1", "5", "10", 50"] - relet
它甚至可以对混合字符串进行排序:["10 dogs", "2 dogs", "35 dogs"] 变成 ["2 dogs", "10 dogs", "35 dogs"] - fpg1503

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接