在 SQLite3 中将字符串与数字进行比较
Posted
技术标签:
【中文标题】在 SQLite3 中将字符串与数字进行比较【英文标题】:Compare strings as numbers in SQLite3 【发布时间】:2011-05-11 09:33:55 【问题描述】:我在 SQLite 中有以下查询:
SELECT * FROM t1 ORDER BY t1.field
其中t1.field
是一个包含数字的文本列。是否可以强制 SQLite 将 t1.field 的值视为数字而不是字符串(不做ALTER TABLE
)?现在排序是纯字符串,所以 10 在 2 之前。
谢谢。
【问题讨论】:
【参考方案1】:嗯,找到了解决办法:
SELECT * FROM t1 ORDER BY t1.field + 0
+ 0
部分似乎强制转换为数字
【讨论】:
谢谢你这对我的帮助,出于对你在什么平台上使用 SQLite 的兴趣? SELECT * FROM t1 ORDER BY CAST(t1.field AS INTEGER) 您甚至可以对混合数据进行排序。如果使用ORDER BY t1.field + 0, t1.field
,这将首先对所有数字进行排序,然后是所有无法转换为数字的字符串 -> ["no", "yes", "1", "5", "10", 50"]
它甚至会排序混合字符串:["10 dogs", "2 dogs", "35 dogs"]
变为 ["2 dogs", "10 dogs", "35 dogs"]
以上是关于在 SQLite3 中将字符串与数字进行比较的主要内容,如果未能解决你的问题,请参考以下文章
如何在linq where子句中将int与字符串进行比较[重复]