2017-06-06 215 views
0

电话号码约束。如果它是从03开始,那么它必须是11位数字,但如果数字是10,那么第二个数字不能是3.我的代码不能正常工作。Sql电话号码限制

c_Phone varchar(11) unique c_Phone check(c_Phone not like '%[^0-9]%'and 
((c_Phone like '03%' and len(c_Phone)=11) or 
(c_Phone like '0^3%' and len(c_Phone)=10)))) 
+0

什么是你想怎么办?阅读[如何创建一个MCVE](https://stackoverflow.com/help/mcve)并删除错误的数据库标签(选择mysql或sql server) – scsimon

+3

尽可能多的,电话号码不符合任何合理的期望。这是一个坏主意。 – tadman

+0

我编辑过帖子,请再次看到 – Dosti

回答

0
alter table dbo.Test 
add constraint UQ_Phone unique (c_Phone) 


alter table dbo.Test 
add constraint CC_Phone check 
(
    c_Phone not like '%[^0-9]%'and 
    ((c_Phone like '03%' and len(c_Phone) = 11) or 
    (c_Phone not like '_3%' and len(c_Phone) = 10)) 
) 
+0

谢谢安东,我知道了 – Dosti