这样的check语句怎么写?

dushuang 2002-08-21 06:15:14
表a中的字段b为:CHAR(10),我想约束他只能是0或1的CHAR
如:'1110001111'正确
'0023224111'错误
必须是10位,怎么写?
...全文
103 点赞 收藏 31
写回复
31 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
OpenVMS 2002-08-21
飘香兄正确!
回复
OpenVMS 2002-08-21
ALTER TABLE a WITH NOCHECK
ADD CONSTRAINT b_check CHECK (b like '[0-1][0-1][0-1][0-1][0-1][0-1][0-1][0-1][0-1][0-1]')
回复
dushuang 2002-08-21
触发器多行时很麻烦!
回复
dushuang 2002-08-21
可以!
回复
caiyunxia 2002-08-21
convert(int,left('1111111111111',len(convert(int,b)))
取B 转换为数据的长度个1
回复
dushuang 2002-08-21
只管数据完整性就行!
回复
caiyunxia 2002-08-21
还不行吗?
不是len(reim(b))=10
是 LEN(RTRIM('0000000001')=10
回复
zlc990405 2002-08-21
我试了一剑飘香的方法,比较好使,但还没进行更多次实验,大约十次而已。
回复
gzhughie 2002-08-21
如果,你一定要在数据库里做这样的校验,那么建议你用触发器,而不是用约束.
回复
N_chow 2002-08-21
是啊,肯定能。
回复
dushuang 2002-08-21
left('1111111111111' 为什么?
回复
gzhughie 2002-08-21
错误后你要做什么处理?
回复
caiyunxia 2002-08-21
错了是
len(rtrim(b))=10 and ISNUMERIC(b)=1
and convert(int,b)<= convert(int,left('1111111111111',len(convert(int,b)))
回复
dushuang 2002-08-21
len(reim(b))=10 不行 char 型的0000000001就通不过!
回复
caiyunxia 2002-08-21
len(rtrim(b))=10 and ISNUMERIC(b)=1
and convert(int,b)<= convert(int,left('1111111111111',len(convert(int,b)))
回复
dushuang 2002-08-21
jinfeng_wang(CSDN,你的速度象蜗牛) 的可以
回复
dushuang 2002-08-21
CHECK (NULLIF(ITEM,'') LIKE REPLICATE( '[0-1]', DATALENGTH( Item)))
能满足10位要求么?
回复
caiyunxia 2002-08-21
修改一下
len(reim(b))=10 and ISNUMERIC(b)=1
and convert(int,b)<= convert(int,left('1111111111111',len(convert(int,b)))
回复
N_chow 2002-08-21
試試我的吧:)
回复
dushuang 2002-08-21
但是 0100000000 也应该正确呀!
回复
加载更多回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2002-08-21 06:15
社区公告
暂无公告