我在Postgresql中有一个带有以下值的数字列:
1.0
3.5
1.5
4.0
我想写一个查询,它会给我所有不是整数的行。 意思是我想得到:
3.5
1.5
我该怎么做?
答案 0 :(得分: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;
的 LiveDemo
强>
在数学中,余数是之后“遗留”的数量 执行一些计算。
例如:
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);
的 LiveDemo2
强>