如何检查数字字段中的值是否为整数?

时间:2015-11-09 13:45:41

标签: sql postgresql

我在Postgresql中有一个带有以下值的数字列:

1.0
3.5
1.5
4.0

我想写一个查询,它会给我所有不是整数的行。 意思是我想得到:

3.5
1.5

我该怎么做?

1 个答案:

答案 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

Remainder

  

在数学中,余数是之后“遗留”的数量   执行一些计算。

例如:

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