2013-03-20 88 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),....