Команда SQL Server LIKE [0-9] не будет совпадать ни с одной цифрой от 0 до 9 - PullRequest
1 голос
/ 14 октября 2008

Это ограничение, которое у меня есть для таблицы клиентов.

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 Оператор INSERT противоречит ПРОВЕРЬТЕ ограничение "CN_CustomerPhoneNo". Конфликт произошел в базе данных «Бухгалтерский учет», таблица «ДБО.Клиенты», колонка «Телефон». Заявление было прекращается.

Я уверен, что мне не хватает чего-то очень простого, но я не могу найти это.

Я пытался упростить ограничение до «Phone LIKE» [0-9] »и вставить одну цифру, но все равно не получается. WTF?

Ответы [ 2 ]

5 голосов
/ 14 октября 2008

Проверьте длину поля телефона.
Это 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 голос
/ 14 октября 2008

Я идиот, поле было объявлено как nchar, и я не учел пробелы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...