如题,我写了这样的约束alter table t1
add constraint ck check(name like 'zf...')我的意思是必须有zf开头,然后后面跟3个随便的字符,可是不行
难道 .在oracle中不是通配符吗?那应该是什么?

解决方案 »

  1.   

    那再问下,oracle中表示数字怎么表示呀
      

  2.   

    在sqlserver中是[0-9]
    那么在oracle中呢
      

  3.   


    难道sqlserver用...代表单个字符?我以前怎么用_  _是sql标准吧大学课本里这样写的,应该就是标准,不针对某个具体数据库数字似乎也是[0-9]
      

  4.   

    可以这样:create table t12 (num varchar2(3) constraint chk_num check(regexp_like(num,'^[0-9]{1,3}$')));insert into t12 values ('a2c');insert into t12 values ('a2c')
    Error at line 1
    ORA-02290: check constraint (HR.CHK_NUM) violated不过要Oracle10g或以上版本才支持正则表达式。
    还有,如果要这样判断输入数字,还不如这样建表:create table t12 (num number(3) constraint chk_num check(num between 0 and 999));insert into t12 values (-22);insert into t12 values (-22)
    Error at line 1
    ORA-02290: check constraint (HR.CHK_NUM) violated
      

  5.   

    参照5楼使用正则表达式即可搞定
    楼主可以google一下正则表达式的用法