sql check 约束 表达式

是这样的,我在数据库中,想用在设计-属性里添加一个CHECK约束一个身份证号,限制为:只能是15或18位,我填写的表达式是LIKE'[0-9][0-9][0-9][0-9... 是这样的,我在数据库中,想用在设计-属性里添加一个CHECK约束一个身份证号,限制为:只能是15或18位,我填写的表达式是
LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
OR
LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
但是系统提示我,验证约束时出错,请问应该怎么弄呀?
展开
 我来答
百度网友e3ce692
2014-08-12 · TA获得超过156个赞
知道小有建树答主
回答量:215
采纳率:100%
帮助的人:191万
展开全部
你的语句有问题,首先用like不是这样用的,应该是:check(chk_id like ‘...’ or chk_id like '...'),其次你不能用like控制长度的吧,like是匹配字符的,不是匹配长度,长度用len,你把这列属性设置为 int,然后check(len(chk_id) in ('18','15'))

具体如下:
create table a_test
(
id int null ,
chk_id int null check(len(chk_id) in ('18','15'))
)
jelvis
推荐于2018-03-07 · TA获得超过5631个赞
知道大有可为答主
回答量:2480
采纳率:62%
帮助的人:834万
展开全部

只限制长度的话,这样就行

create table t1
( PID varchar(20) not null ,
 CONSTRAINT chk_PID check (len(PID) in ('15','18'))
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友def29169c1
2014-08-12 · TA获得超过263个赞
知道小有建树答主
回答量:91
采纳率:0%
帮助的人:81.8万
展开全部

你是这样写:

PID LIKE ......
OR
PID LIKE ......

还是这样写:

PID LIKE ... ...
OR
LIKE ... ...
更多追问追答
追问
一开始我没有加字段名字,所以不行,谢谢啊。
还有一个问题,我想把一个字段的默认值设置为当前时间,请问怎么实现?
追答
date1 datetime default GETDATE()
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
家有一只羊
2014-08-12 · 超过58用户采纳过TA的回答
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:107万
展开全部
你确定身份证都是这样的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式