2015-11-09 242 views
2

我在PostgreSQL與這些值的數字列:如何檢查數值字段中的值是否是整數?

1.0 
3.5 
1.5 
4.0 

我想編寫一個查詢,這將給我不是整數的所有行。 含義我想:

3.5 
1.5 

我該怎麼辦呢?

+5

其中numcol <>投(numcol爲INT) – jarlh

+0

要知道,你只能依靠精確的數據類型的整數檢查如DECIMAL。使用像REAL這樣的近似數據類型,你不能(或者至少你必須定義一個容差)。 –

回答

2

可以使用模師:

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

+0

你能解釋一下哪裏? – avi

+0

@avi查看已更新 – lad2025