使用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]'))
这么做了,但是插入数据时,提示违反约束条件。
展开
 我来答
占座专用ID
2011-03-31 · TA获得超过235个赞
知道小有建树答主
回答量:217
采纳率:0%
帮助的人:204万
展开全部
不知道你的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);
匿名用户
2011-03-31
展开全部
I doing it.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式