【问题标题】:SQLite3 Order by highest/lowest numerical valueSQLite3 按最高/最低数值排序
【发布时间】:2020-11-08 23:57:52
【问题描述】:

我正在尝试在 SQLite3 中进行查询以按数值对列进行排序。行不是按列的数值排序,而是按第一个数字的数值的字母顺序排列。

例如,110 以下的查询出现在 2 之前,因为第一个数字 (1) 小于 2。但是整个数字 110 大于 2,我需要它出现在 2 之后。

sqlite> SELECT digit,text FROM test ORDER BY digit;
1|one
110|One Hundred Ten
2|TWO
3|Three
sqlite>

有没有办法让110出现在2之后?

【问题讨论】:

    标签: sql string sqlite sql-order-by


    【解决方案1】:

    似乎digit 是作为字符串存储的,而不是作为数字存储的。您需要将其转换为数字才能获得正确的排序。一个简单的方法使用:

    SELECT digit, text 
    FROM test
    ORDER BY digit + 0
    

    【讨论】:

    • 它是否适用于任何长度的数字(我只使用了 1 位数字和 1 个 3 位数字)。 + 0 是什么意思?这只是他们使用的一个短语吗?
    • @Operation420.net: + 0 强制转换为数字。无论位数如何,这都有效。
    • 哦,这正是我想要的。谢谢。 + 00,+ 1等是否也意味着什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 2019-10-10
    相关资源
    最近更新 更多