在SQLite表中显示负实数

时间:2018-05-19 04:42:58

标签: sqlite

我在SQLite的表F中有一个类型为REAL的列C.我希望在其他表格的任何地方加入F的负值(以及其他一些字段)。

然而-C或0-C等都返回C的舍入值,例如当C包含“123,456”时,则-C返回“-123”。

我应该首先通过字符串转换它还是语法不同?

1 个答案:

答案 0 :(得分:1)

看起来,中的123,456是小数点分隔符,但SQLite将整个事物视为字符串(即'123,456'而不是123.456)。请记住,SQLite的类型系统与SQL values have types but columns don't

略有不同
  

[...]在SQLite中,值的数据类型与值本身相关联,而不是与其容器相关联。 [...]

所以你可以悄悄地将一个字符串(在某些语言环境中看起来像一个实数)放入一个真正的列中,直到以后才会发生任何不好的事情。

您可以在数据进入SQLite之前修复导入过程以根据需要解释小数点分隔符,或者您可以根据需要使用replace进行修复:

sqlite> select -'123,45';
-123
sqlite> select -replace('123,45', ',', '.');
-123.45