在我的数据库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
答案 0 :(得分:0)
尝试
select... order by cast(replace("+filter+",',','.') as real)
Sqlite期望dot而不是逗号作为分数部分分隔符。它也默默地忽略了不可转换的尾部,所以'24,5'被转换为24.0。
从您的时间列开始,如果您将其排序为字符串,则可以很好地排序,而不会转换为浮点数。但是如果你想出于某种原因投出它,你可以用replace
将冒号变成点。