create table t1
(
    编号 varchar(10) not null check(regexp_like(编号,'[0-9][0-9][0-9][0-9]')) ,    //约束只能输入4位数字
    姓名 varchar(20) not null
)表创建成功以后,
执行一下语句:
1、
insert into t1 values('21','aa');
返回错误,违反约束条件。
2、
insert into t1 values('1221','Aaa');
执行成功!
3、
insert into t1 values('12321','Daa');
执行成功!我创建的表中有约束条件,约束只能输入4位数字,为什么能输入5位呢?
是我写错了还是怎么个情况,求高手帮忙……

解决方案 »

  1.   

    check(regexp_like(编号,'[0-9]{4}'))
    试试
    你为什么不直接 varchar2(4)了
      

  2.   

    check(regexp_like(编号,'[0-9]{4}'))
    这个也是能输入5位、6位。。
      

  3.   

    varchar2(4)这个导入数据的时候老是报错……所以如果在需要导入数据的时候应该长度留的大一点……
      

  4.   

    干嘛都喜欢开多个帖子呢create table t1
    (
      编号 varchar(10) not null check(regexp_like(编号, '^\d{4}$')) , --约束只能输入4位数字
      姓名 varchar(20) not null
    )