SQL/MariaDB SELECT * FROM ... WHERE 十进制数
SQL/MariaDB SELECT * FROM ... WHERE decimal number
我对 SELECT 语句有疑问。我想这样做:
SELECT * FROM `table1` WHERE x=0.0509
但它 return 没有行。我确定有一行的 x 值为 0.0509。如果我这样做:
SELECT * FROM `table1` WHERE x=0
它实际上 return 所有 x=0 的行,这意味着我的 sql 陈述总体上是正确的。我如何 SELECT 其中 x 是带小数的数字?我认为是小数导致了问题?
也许可以尝试在 2 个值之间平衡搜索词,如下所示:
SELECT * FROM table1 WHERE x BETWEEN 0 AND 0.1;
这对我有用:)
Photo here
编辑:我找不到任何方法来获得精确的小数点,但你可以这样做,但要使值:
SELECT * FROM table1 WHERE x BETWEEN 0.05089999 AND 0.05090001;
这可能是你做到这一点的最佳方式,我很确定
FLOAT
为近似值。所以,存储的值不完全是 0.0509。您应该改用 DECIMAL
。
您可以随时将值转换为 DECIMAL
。
SELECT *
FROM table1
WHERE cast(x as decimal(10,4))=0.0509
我对 SELECT 语句有疑问。我想这样做:
SELECT * FROM `table1` WHERE x=0.0509
但它 return 没有行。我确定有一行的 x 值为 0.0509。如果我这样做:
SELECT * FROM `table1` WHERE x=0
它实际上 return 所有 x=0 的行,这意味着我的 sql 陈述总体上是正确的。我如何 SELECT 其中 x 是带小数的数字?我认为是小数导致了问题?
也许可以尝试在 2 个值之间平衡搜索词,如下所示:
SELECT * FROM table1 WHERE x BETWEEN 0 AND 0.1;
这对我有用:)
Photo here
编辑:我找不到任何方法来获得精确的小数点,但你可以这样做,但要使值:
SELECT * FROM table1 WHERE x BETWEEN 0.05089999 AND 0.05090001;
这可能是你做到这一点的最佳方式,我很确定
FLOAT
为近似值。所以,存储的值不完全是 0.0509。您应该改用 DECIMAL
。
您可以随时将值转换为 DECIMAL
。
SELECT *
FROM table1
WHERE cast(x as decimal(10,4))=0.0509