SQL Server — Как проверить номер с помощью регулярного выражения?

#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 /…