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

die*_*ogs 7 sql sqlite comparison coercion

我在SQLite中有以下查询:

SELECT * FROM t1 ORDER BY t1.field
Run Code Online (Sandbox Code Playgroud)

t1.field包含数字的文本列在哪里.是否可以强制SQLite将t1.field的值视为数字而不是字符串(不做ALTER TABLE)?现在排序是一个纯字符串,所以10在2之前.

谢谢.

die*_*ogs 19

好吧,找到了解决方案:

SELECT * FROM t1 ORDER BY t1.field + 0
Run Code Online (Sandbox Code Playgroud)

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

  • SELECT*FROM t1 ORDER BY CAST(t1.field AS INTEGER) (8认同)