SQLite查询比较两个铸造值的问题

时间:2018-03-15 16:42:27

标签: sqlite

我在SQLite中遇到一个问题,我希望你们中的一个人能够帮助我。

我需要创建一个查询,只显示特定值以上的结果。它本质上是一个select * from table,其中a> B'/ P>

现在我面临的问题是,尽管这些值位于十进制类型的列中,但值似乎是字符串。我想要比较的值将来自一个字符串。

数据库不是我拥有或填充的数据库,我只有读取权限。

我尝试排序的值

26,4
18,2
11,1
11,1
10,6
2,8
2,8
2,1
0,0
0,0
0,0
1,7
0,0
0,0
0,0
0,2
0,0
0,0
1,8
0,0
0,0
0,0
0,0
0,0
0,0
0,0
0,1
0,0
10,0

当我使用诸如

之类的查询时
  

select * FROM [table] WHERE CAST(GR14 as double)> CAST(' 1,0' as   双)

我得到的结果是

26,4
18,2
11,1
11,1
10,6
2,8
2,8
2,1
10,0

结果1,7和1,8缺失。

我已尝试将其转换为float,real,decimal但结果始终保持不变。

有人有想法吗? 谢谢, 肯尼斯

1 个答案:

答案 0 :(得分:1)

这个奇怪的问题是由于SQLite如何使用逗号而不是句点作为小数点来解释数字:

sqlite> select cast('1,7' as double);
cast('1,7' as double)
1.0
sqlite> select cast('1.7' as double);
cast('1.7' as double)
1.7

代替在SQLite中修复此问题,我建议对文本列进行文本替换,然后将其转换为double:

select * FROM [table] WHERE CAST(replace(GR14, ',','.') as double) > CAST('1,0' as double)

注意后人:SQLite版本3.22.0