2013-03-20 32 views
0

我在列中有雙精度類型的座標。我想在小數點前(小數點前)檢查長度(它必須是7)。這些數字可以有小數多達4在postgres中添加雙精度類型的檢查約束

我最初的想法:

CHECK (char_length(point_gauss::double precision::char)=... 
+0

沒有「長「的浮點值(或變量)。 (1/3)的「長度」是多少? – wildplasser 2013-03-20 14:34:51

+0

好的。選擇小數類型更好嗎?在我的情況下'十進制(11,4)'。 – Stefan 2013-03-20 14:40:19

+0

這將取決於變量應該代表什麼。 – wildplasser 2013-03-20 14:42:21

回答

0

對於浮點記住這些二進制浮點類型等小數精度是有點問題的概念。你的第一直覺應該是這樣的:

CHECK(point_gauss BETWEEN -9999.999 AND 9999.999) 

但是,如果你需要特定的基地10精度最好的辦法是從double改變爲數字,用這個代替:

point_gauss NUMERIC(7,3),....