2008-10-13 3 views
1

이것은 Customers 테이블에있는 제한 사항입니다.SQL Server 명령 LIKE [0-9]는 0-9 사이의 임의의 숫자와 일치하지 않습니다.

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') 

이 오류 메시지와 함께.

메시지 547, 수준 16, 상태 0, 줄 1 CHECK 제약 조건 "CN_CustomerPhoneNo"와 충돌 INSERT 문. "Accounting"테이블의 "dbo.Customers", 열 'Phone'에 데이터베이스 충돌이 발생했습니다. 성명은 종료되었습니다.

나는 정말 간단한 것을 놓치고있을 것이라고 확신하지만, 그것을 찾을 수 없습니다.

제약 조건을 'Phone LIKE'[0-9] ''로 단순화하고 하나의 숫자를 삽입하려고했지만 여전히 실패합니다. WTF?

답변

4

전화 필드의 길이를 확인하십시오.
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 
 
+0

네, 오타였습니다. –

1

임시 테이블과 바보 코드를 해요 사용하여 필드는 NCHAR로 선언되었고, 나는 '계정에 패딩 공간을하지 않았다.

관련 문제