这样的check语句怎么写?

dushuang 2002-08-21 06:15:14
表a中的字段b为:CHAR(10),我想约束他只能是0或1的CHAR
如:'1110001111'正确
'0023224111'错误
必须是10位,怎么写?
...全文
135 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 也应该正确呀!
加载更多回复(11)

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧