在我的数据库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
在我的数据库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
尝试
select... order by cast(replace("+filter+",',','.') as real)
Sqlite需要点而不是逗号作为分数部分分隔符。它也默默忽略了不可转换的尾巴,所以'24,5'转换为24.0。
从您的时间栏开始,如果您将其排序为字符串,而不是将其转换为浮点型,它将很好地排序。但是如果你想出于某种原因投射它,你可以用冒号变成replace
。
您是否尝试过订购它们而不将它们转换为真实的订单,因为字符串可能会工作 –
因此,您在字符串列中有两个非字符串数据类型。你今天过得不好吗? 45:24应该在45.24之前还是之后? –