使用ORACLE数据库 想实现name字段,只能字母(大小写均可)打头,后面跟7个阿拉伯数字,如何实现?
altertabledadd(namevarchar2(8)constraintck_1check(namelike'[a-z,A-Z][0-9][0-9][0-9][0...
alter table d add(name varchar2(8)
constraint ck_1 check(name like '[a-z,A-Z][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))
这么做了,但是插入数据时,提示违反约束条件。 展开
constraint ck_1 check(name like '[a-z,A-Z][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'))
这么做了,但是插入数据时,提示违反约束条件。 展开
2个回答
展开全部
不知道你的oracle是什么版本,10G可以用正则表达式:
ALTER TABLE d ADD
constraint ck_1 CHECK(regexp_like(NAME,'^[[:alpha:]]{1,1}+[0-9]{7,7}$'));
--具体含义你自己研究下
10G之前可以自定义函数来判断,如果只是自己用,可以通过to_number的转换报错来判断。
第一个字符为字母,后7个可转换为number型并大于等于0则为数字,长度做下限制。
ALTER TABLE d ADD
constraint ck_1 check(((substr(NAME,1,1)>'a' AND substr(NAME,1,1)<'z')
OR (substr(NAME,1,1)>'A' AND substr(NAME,1,1)<'Z'))
AND to_number(substr(NAME,2,7))>=0 AND length(NAME)=8);
ALTER TABLE d ADD
constraint ck_1 CHECK(regexp_like(NAME,'^[[:alpha:]]{1,1}+[0-9]{7,7}$'));
--具体含义你自己研究下
10G之前可以自定义函数来判断,如果只是自己用,可以通过to_number的转换报错来判断。
第一个字符为字母,后7个可转换为number型并大于等于0则为数字,长度做下限制。
ALTER TABLE d ADD
constraint ck_1 check(((substr(NAME,1,1)>'a' AND substr(NAME,1,1)<'z')
OR (substr(NAME,1,1)>'A' AND substr(NAME,1,1)<'Z'))
AND to_number(substr(NAME,2,7))>=0 AND length(NAME)=8);
2011-03-31
展开全部
I doing it.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询