我很难让我的PL / SQL代码工作。我有一个约束,确保输入5位数。约束适用于任何不首先使用0的数字。示例0,1,2,33,401工作但01,02,004不起作用。如何才能输入00009等数字?
CREATE TABLE table1
(
id NUMBER(5)
CONSTRAINT idconstraint
CHECK (REGEXP_LIKE(id, '[0-9][0-9][0-9][0-9][0-9]'))
);
INSERT INTO table1
VALUES ('00009');
答案 0 :(得分:2)
您似乎有错误的约束或错误的数据类型。如果您想要前导零,请使用varchar2()
或char()
。因为你似乎想要一个固定长度的字符串,试试这个:
CREATE TABLE table1 (
id CHAR(5)
CONSTRAINT idconstraint
CHECK (REGEXP_LIKE(id, '[0-9][0-9][0-9][0-9][0-9]'))
);
您的问题是该字段被声明为数字。输入字符串将转换为数字,然后再转换为字符串。它在此过程中失去了领先的0
。