Установить ограничение, чтобы начать с 0, затем только 9 и содержать 11 цифр? - PullRequest
0 голосов
/ 29 апреля 2020

В настоящее время я создаю проект базы данных, в котором он принимает только действительный номер телефона, который начинается с "09", а остальные - любые номера, хотя он должен быть ограничен только 11 номерами, включая 09. С моим кодом ниже он принимает только 11 цифр, но даже когда я попробовал 63256115426 номера, такие все еще могут быть приняты.

([ContactNo]>=(0) AND [ContactNo]<=(9999999999.))

Ответы [ 2 ]

2 голосов
/ 29 апреля 2020

Первая проблема, с которой вы столкнулись, заключается в том, что вы используете неправильный тип данных для телефонных номеров, поэтому вам нужно использовать правильное имя, которое в вашем случае CHAR(11)/VARCHAR(11).

Тогда вам нужно создать ограничение следующим образом:

CREATE TABLE MyTable (
  ContactNo varchar(255)
  CONSTRAINT CK_ContactNo2 
  CHECK (ContactNo LIKE '09[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')                 
); 



INSERT INTO MyTable(ContactNo) VALUES ('11111') -- Fail
INSERT INTO MyTable(ContactNo) VALUES ('09123456789')-- Succeed

и не забудьте удалить предыдущее, если вы не воссоздаете свою таблицу.

0 голосов
/ 29 апреля 2020

Ваш телефонный контакт должен быть в CHAR (11), а не в любом числовом типе данных c, потому что первые 0 будут математически удалены. Как я вижу, ваше ограничение соответствует числовому типу данных, а не символьной строке.
При правильном типе данных ограничения, заданные Сандрой Гилеп Зоуауи Занде, являются правильными. Вы должны использовать числовой тип данных для любого столбца, только если вам нужно вычислить данные. Насколько я помню, я никогда не видел исчисления по номерам телефонов ...

...