在 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 中将字符串与数字进行比较的主要内容,如果未能解决你的问题,请参考以下文章

在 Qt 中将字符与 unicode 进行比较

如何在linq where子句中将int与字符串进行比较[重复]

Thymeleaf - 如何在 Thymeleaf 标签“th:if”中将字符串与 html 中的请求参数进行比较?

如何在unix中将变量与文本进行比较

字符串入门十八讲合集四

字符串入门十八讲合集四