在普通的RDBMS或ORDBMS中,我可以直接声明具有特定精度和小数位数的十进制/浮点值。 例如:
CREATE TABLE Sample1
(
ID NUMERIC(5,2)
);
在实现相同的ID(现在是json中的密钥对值)时,我使用了以下方法
CREATE TABLE Sample1
(
data jsonb,
CONSTRAINT validate_Sample CHECK( length(data ->> 'ID') <= 8 AND ((data ->> 'ID')::numeric(5,2)) >= 0)
);
尽管它可以正常工作,但是我不确定它的长期使用情况。
我也尝试了以下方法。
CREATE TABLE Sample1
(
data jsonb,
CONSTRAINT validate_Sample CHECK(((data ->> 'ID')::numeric(5,2)) >= 0)
);
尽管它限制了我输入超出指定的限制,但并没有限制我输入小数点后的值,例如
for numeric(5,2)
234.54
234.541
234.192821
(All the above value worked)
While 2341.192821 gives "numeric field overflow" error.
对于numeric(5,2),我只是想将其限制在小数点后2位。请提出。