0

在我的数据库 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
4

1 回答 1

0

尝试

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

Sqlite 期望点,而不是逗号,作为小数部分分隔符。它还默默地忽略不可转换的尾部,因此 '24,5' 被转换为 24.0。

在您的时间列中,如果您将其排序为字符串,而不是强制转换为浮点数,它将被很好地排序。但是如果你出于某种原因想要转换它,你可以用 . 将冒号变成点replace

于 2013-01-05T19:16:21.340 回答