带有多个[0-9] [0-9]的PL / SQL REGEXP_LIKE

时间:2014-03-27 22:23:13

标签: sql oracle constraints

我很难让我的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');

1 个答案:

答案 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