Ограничение, которое допускает только указанные c символов, MsSQL - PullRequest
0 голосов
/ 30 марта 2020

Пример объявления таблицы:

CREATE TABLE Person (
    ID int PRIMARY KEY,
    FirstName nvarchar(255),
    LastName nvarchar(255),
    PhoneNumber varchar(255)
)

Как добавить ограничение, которое не позволяет добавлять буквы в PhoneNumber?

1 Ответ

0 голосов
/ 30 марта 2020

Вы можете использовать ограничение check:

alter table person add constraint chk_person_phonenumber
    check (phonenumber not like '%[^0-9]%');

Это говорит о том, что phonenumber не имеет символов, которые не являются цифрами.

Обратите внимание, что вы расширяете шаблон, чтобы разрешить пробелы, дефисы или скобки, если вы действительно хотите их.

Если вы действительно просто хотели цифры, вы также можете использовать try_convert():

    check (phonenumber not like '%.%' and
           try_convert(decimal(38, 0), phonenumber) is not null
          )

Это не так гибко для тем не менее, расширяя набор символов.

...