实数列的Sqlite数学运算忽略小数位

myss37ts  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(354)

我构建了一个包含一个名为Qty的实际列的表,但是当我尝试应用简单的数学运算时,它会忽略小数位。下面是一个例子:

SELECT QTY, QTY*2.0, QTY+1.0 FROM BOM

数量|数量*2.0|数量+1.0
-|-|
0,67|0.0|1.0
1000|2.0|2.0
0,50|0.0|1.0
Qty类型是REAL,这里是CREATE TABLE命令:

CREATE TABLE IF NOT EXISTS bom(
                    BOM_ID text NOT NULL,
                    RM_FK text NOT NULL,
                    QTY REAL NOT NULL,
                    PRIMARY KEY (BOM_ID, RM_FK))
r6l8ljro

r6l8ljro1#

Sqlite使用Flexible Typing
即使您将Qty声明为REAL,SQLite也会接受并存储任何值,甚至文本,如果可以,则将其转换为REAL,如果不能,则将其存储为文本。
正如@forpas所指出的,您在Qty中插入了‘0,67’,因为小数分隔符是‘’,所以SQLite无法对其进行实数转换。而不是‘,’。
因此,在进行计算时,它只使用‘,’之前的数字,而忽略‘,’之后的数字。

相关问题