#sql #sql-server #regex
#sql #sql-server #регулярное выражение
Вопрос:
Я столкнулся с проблемой с регулярным выражением в SQL Server.
У меня есть такой запрос:
SELECT 1
WHERE '/test/url/1' LIKE '/test/url/%[0-9]'
но в этом регулярном выражении есть проблема.
Когда я ввожу недопустимый URL, например /test/url/1w1
, он возвращает 1, а регулярное выражение работает некорректно.
Я хочу проверить целое число в URL с любой длиной в качестве :ID
параметра.
Пожалуйста, порекомендуйте правильное регулярное выражение для этой ситуации.
Комментарии:
1. sql-сервер слаб для регулярных выражений.
2. SQL SERVER 2017 14.0.1000.169
Ответ №1:
Вы можете использовать:
SELECT 1
WHERE '/test/url/1' LIKE '/test/url/%[0-9]' AND
'/test/url/1' NOT LIKE '/test/url/%[^0-9]%'
Это требует целого числа (0-9) в начале последнего сегмента пути, но позволяет избежать того, чтобы сегмент заканчивался целым числом.
Комментарии:
1. Это недопустимое выражение SQL. Почему это было принято в качестве ответа (и поддержано)?
2. Я не уверен, Гордон. Дэвид отредактировал это последнее, и мой ответ был просто «НЕ НРАВИТСЯ»/ test / url/%[^0-9]%'». Возможно, ответ был принят и поддержан перед редактированием? Вы указываете здесь на отсутствующее условие «И»??
3. вот ссылка на регулярное выражение в SQL docs.microsoft.com/en-us/sql/ssms/scripting /…