当前位置: 代码迷 >> Sql Server >> sql check约束解决思路
  详细解决方案

sql check约束解决思路

热度:124   发布时间:2016-04-27 11:46:01.0
sql check约束
大家好,我建了一个表(table),表中的一个字段用了check约束,定义如下 check('[A-Z]{3}'),但插入"ABC"时却报错,我知道用将check改为('[A-Z][A-Z][A-Z]')可以解决问题,但是在sql中是否有方法类似于Java的正则表达式?假如没有,我要限定一个50位长度的字符串,那岂不是得把[A-Z]复制50次?请大家帮帮忙,谢谢

------解决方案--------------------
constraint ck_col1 check(patindex('%[^a-zA-Z]%',col1)=0)
------解决方案--------------------
以check前3位均为字母为例,
SQL code
create table rai( id int identity(1,1),  pn varchar(10) constraint ck_rai_pn                  check(patindex('%[^A-Z]%',left(pn,3))=0                        or patindex('%[^A-Z]%',left(pn,3))>3))insert into rai(pn) values('DR1')/*Msg 547, Level 16, State 0, Line 1The INSERT statement conflicted with the CHECK constraint "ck_rai_pn". The conflict occurred in database "DBAP", table "dbo.rai", column 'pn'.The statement has been terminated.*/insert into rai(pn) values('DRS')insert into rai(pn) values('DRSP')select * from rai/*id          pn----------- ----------2           DRS3           DRSP(2 row(s) affected)*/
  相关解决方案