SQLite对包含数字或文本的列进行排序

时间:2017-08-28 22:59:03

标签: sqlite

我有一个包含用户条目描述的列,这些描述可以是任何内容,但我确实需要将它们按逻辑顺序排序。

文字可以是任何类似的 16至26个月 40至60个月 读写能力 数学

当我在sql语句中订购这些文本项时,返回正常。但是,任何以数字开头的都会以不符合逻辑的顺序返回

16至26个月 将在之前 8至20个月

我理解为什么它需要第一个字符等但不知道如何改变sql语句(使用sqlite)来提高性能而不会弄乱以文本开头的条目

当我转换为数字时,数字很好,以文字开头的项目出错了

由于

1 个答案:

答案 0 :(得分:0)

您需要的是以“自然顺序”对值进行排序。为此,您需要实现自己的collating sequence; SQLite没有为这种情况提供一个。

这里有关于此主题的一些问题(和答案),但它们适用于其他RDBMS。我在快速搜索中找到的最好的是:

http://wiki.ozanh.com/doku.php?id=python:database:sqlite:how_to_natural_sort

您应该考虑改进表格架构,例如: G。将句点拆分为单独的整数列(monthsMin,monthsMax)而不是使用文本,这将使排序更容易。如有必要,您始终可以根据此值构建字符串。