在SQLite表中显示负实数

在SQLite表中显示负实数,sqlite,Sqlite,我在SQLite的表F中有一个类型为REAL的C列。我想把它连接到任何地方,在另一个表中,F的负值存在(以及其他一些字段) 但是-C或0-C等。。全部返回C的舍入值,例如,当C包含“123456”时,-C返回“-123” 我应该先通过字符串进行转换还是语法不同?看起来像,123456中的是一个十进制分隔符,但SQLite将整个内容视为一个字符串(即'123456'而不是123.456)。请记住,SQLite的类型系统与SQL的类型系统略有不同,如下所示: […]在SQLite中,值的数据类型与值

我在SQLite的表F中有一个类型为REAL的C列。我想把它连接到任何地方,在另一个表中,F的负值存在(以及其他一些字段)

但是-C或0-C等。。全部返回C的舍入值,例如,当C包含“123456”时,-C返回“-123”


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

看起来像
123456
中的
是一个十进制分隔符,但SQLite将整个内容视为一个字符串(即
'123456'
而不是
123.456
)。请记住,SQLite的类型系统与SQL的类型系统略有不同,如下所示:

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

因此,您可以悄悄地将一个字符串(在某些地区看起来像一个实数)放入一个实数列中,直到稍后才会发生任何不好的事情

您可以在数据进入SQLite之前根据需要修复导入过程以解释十进制分隔符,或者根据需要修复它们:

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

那个逗号是十进制分隔符吗?在我看来,
123456
被解释为字符串,
-C
中的隐式类型转换不知道这一点。嗯。。。好的一个,所有条目在数据库中都有X,NN,所以这是一个更大的问题,因为第三方的导入可能是错误的。。。谢谢,可能就是这样。