SQL Server命令LIKE [0-9]将不匹配0到9之间的任何数字

时间:2008-10-13 23:53:03

标签: database sql-server-2005 debugging

这是我在Customers表上的约束。

ALTER TABLE Customers
    ADD CONSTRAINT CN_CustomerPhone
    CHECK (Phone LIKE '([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]')

为什么这会失败?

INSERT INTO Customers
(CustomerName, Address, City, State, Zip, Phone)
VALUES
('Some Name','An Address', 'City goes here', 'WI', 12345, '(800) 555-1212')

出现此错误消息。

  

Msg 547,Level 16,State 0,Line 1 The   INSERT语句与   检查约束“CN_CustomerPhoneNo”。   冲突发生在数据库中   “会计”,表“dbo.Customers”,   列'电话'。声明一直如此   终止。

我确信我错过了一些非常简单的东西,但我找不到它。

我已经尝试将约束简化为'Phone LIKE'[0-9]''并插入一个数字,但它仍然失败。 WTF?

2 个答案:

答案 0 :(得分:5)

检查“电话”字段的长度 是15个或更多字符吗?

在这里使用带有临时表的代码


create table #temp
(phone varchar(15))

ALTER TABLE #temp
    ADD CONSTRAINT CN_CustomerPhone
    CHECK (Phone LIKE '([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]')

INSERT INTO #temp
(Phone)
VALUES
('(800) 555-1212')

select * from #temp

drop table #temp

答案 1 :(得分:1)

我是个白痴,这个领域被宣布为nchar,我没有考虑到填充空间。