在postgres中添加双精度类型的检查约束
问题描述:
我在列中有双精度类型的坐标。我想在小数点前(小数点前)检查长度(它必须是7)。这些数字可以有小数多达4在postgres中添加双精度类型的检查约束
我最初的想法:
CHECK (char_length(point_gauss::double precision::char)=...
答
对于浮点记住这些二进制浮点类型等小数精度是有点问题的概念。你的第一直觉应该是这样的:
CHECK(point_gauss BETWEEN -9999.999 AND 9999.999)
但是,如果你需要特定的基地10精度最好的办法是从double改变为数字,用这个代替:
point_gauss NUMERIC(7,3),....
没有“长“的浮点值(或变量)。 (1/3)的“长度”是多少? – wildplasser 2013-03-20 14:34:51
好的。选择小数类型更好吗?在我的情况下'十进制(11,4)'。 – Stefan 2013-03-20 14:40:19
这将取决于变量应该代表什么。 – wildplasser 2013-03-20 14:42:21