Перенос таблиц MS-Access с регулярным выражением в правиле валидации на SQL-сервер - PullRequest
0 голосов
/ 11 октября 2019

Я перевожу базу данных MS-Access .accdb в SQL Server 2017. В моей базе данных MS Access есть много столбцов таблицы с правилом проверки, например «NOT LIKE [! A-z0-9».] ». Я не могу найти способ добавить ограничение в SQL Server, которые делают то же самое. Есть ли способ сделать это, или просто невозможно перенести MS Access на SQL-сервер без потери функциональности?

ALTER TABLE [Zones]
    ADD CONSTRAINT [CHK_Zon]
        CHECK ([Zon] NOT LIKE '*[!a-z0-9.]*')

1 Ответ

0 голосов
/ 11 октября 2019

Я думаю, вы хотите:

NOT LIKE '%[^a-z0-9.]%'

Это будет означать, что будут разрешены только буквы a до z, цифры от 0 до 9 и символ .,Обратите внимание, что все или некоторые заглавные буквы могут быть разрешены, в зависимости от вашего сопоставления, и все строчные буквы, с a-z.

% являются многосимвольными подстановочными знаками.

The *Символ 1015 * (карат) означает «Любой отдельный символ, не входящий в указанный диапазон» . Так, например, 'Test' NOT LIKE '%[^A-z]%' вернет TRUE, поскольку он содержит только символы в диапазоне A-z (он не содержит никаких внешних символов.

SQL Server не поддерживает Regex (не изначальнов любом случае, он может использовать функции CLR), он имеет только простое сопоставление с образцом, о котором вы можете прочитать о здесь .

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