我在Postgresql中有一个带有以下值的数字列:
1.0
3.5
1.5
4.0
我想编写一个查询,该查询将为我提供所有非整数的行。我想得到的意思是:
3.5
1.5
我怎么做?
您可以使用模除法:
CREATE TABLE tab(col DECIMAL(10,2));
INSERT INTO tab(col)
VALUES (1.0),(3.5),(1.5),(4.0);
SELECT *
FROM tab
WHERE col % 1 <> 0;
在数学中,余数是执行一些计算后的“剩余”量。
例如:
10 % 4 = 2 because (FLOOR(10/4) = 2, 2 * 4 + 2 = 10)
13 % 4 = 1 because (FLOOR(13/4) = 3, 3 * 4 + 1 = 13)
3.5 % 1 = 0.5 because (FLOOR(3.5/1) = 3, 3 * 1 + 0.5 = 3.5)
4.0 % 1 = 0 because (FLOOR(4.0/1) = 4, 4 * 1 + 0 = 4)
因此,如果数字在小数点后的位数不是零,则说明它不是整数。
或者,您可以使用:
SELECT *
FROM tab
WHERE col <> FLOOR(col);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句