在子串

时间:2016-05-24 17:26:10

标签: sql tsql

我在我的一个名为“CONTACT”的属性上添加了一个检查约束,如下所示:

CONSTRAINT CONTACTCORRECTNESS  CHECK ( SUBSTRING(CONTACT , 1 , 4) IN    
('0300', '0301', '0302', '0303', '0304', '0305', '0306', '0307', '0308', 
'0309' ,'0341', '0342', '0343', '0344', '0345', '0346', '0347', '0331', '0334', 
'0333', '0334', '0335', '0336', '0321', '0322', '0323', '0324', '0325', 
'0311', '0312', '0313', '0314', '0315')) 

假设联系号码总是11位数并且是varchar值,这里的目标是获取每个新联系人条目的前四位数字,因为它被送入数据库并验证它们是否匹配其中一个上面提到的集合中的字符串(上面检查约束内的字符串集合)。

我已经使用了上述方法,但即使在正确的联系号码上发生约束违规,它也无法正常工作。需要帮助!

1 个答案:

答案 0 :(得分:0)

在子串中使用Rtrim和Ltrim,然后尝试....

CONSTRAINT CONTACTCORRECTNESS  CHECK ( SUBSTRING(LTRIM(RTRIM(CONTACT)) , 1 , 4) IN    
('0300', '0301', '0302', '0303', '0304', '0305', '0306', '0307', '0308', 
'0309' ,'0341', '0342', '0343', '0344', '0345', '0346', '0347', '0331', '0334', 
'0333', '0334', '0335', '0336', '0321', '0322', '0323', '0324', '0325', 
'0311', '0312', '0313', '0314', '0315'))