订单号按字母顺序排列

时间:2013-01-05 19:07:05

标签: android sqlite

在我的数据库sqlite中,我有一个浮点数和时间存储为字符串的列,为什么当我尝试使用此查询对它们进行排序时

select... order by cast("+filter+" as real)

使用错误的序列返回我的数字列:

    22,5
    23
    23,5
    23
    23,5
    24,5
    24

或我的时间列也有错误的序列:

00:56
00:57
00:52
00:46

1 个答案:

答案 0 :(得分:0)

尝试

select... order by cast(replace("+filter+",',','.') as real)

Sqlite期望dot而不是逗号作为分数部分分隔符。它也默默地忽略了不可转换的尾部,所以'24,5'被转换为24.0。

从您的时间列开始,如果您将其排序为字符串,则可以很好地排序,而不会转换为浮点数。但是如果你想出于某种原因投出它,你可以用replace将冒号变成点。