首页 > 解决方案 > 如何将十进制数限制为 3 位作为约束检查(SQL)

问题描述

我需要使用约束来检查列值(poids)是否高于 0 并且在“。”之后不超过 3 个 digist。(这是我可能/将要面临的考试问题)

检查 poids 是否高于 0 很容易。

我有 google-it,人们说这在数据库端是不可能的,因为这需要作为格式输出来完成。

decimal(5,3) 将列限制为 3 位,但我们仍然可以输入 3 位以上的数字,这是我不想要的

这就是我到目前为止所拥有的(仅缺少“和”的右侧,因为这是关于 3 位数限制的约束)

create table produit (
  NP number(5),
  poids decimal (5,3),
  constraint PK_produit primary key (NP),
  constraint ck_produit_poids check (poids >= 0 and )
);

标签: sqloracleddlcheck-constraints

解决方案


这是你想要的吗?

 constraint ck_produit_poids check 
     (poids 
  >= 0 and
  length(Substr(poids,INSTR(poids, '.' )+1,
    length(poids) )<=3

推荐阅读