Есть ли способ написать Regex в SQL Запрос к серверу?
Только с помощью CLR. Нет встроенной поддержки регулярных выражений. LIKE
и PATINDEX
поддерживают очень ограниченный диалект сопоставления с образцом.
Тем не менее этого достаточно, чтобы получить строки, где LoginName
- строка «Ввод», за которой следует любое количество цифр (включая нулевые), а затем конец строки.
Как показано ниже ( DBFiddle link )
SELECT *
FROM TestTable
WHERE LoginName LIKE 'Input%'
AND SUBSTRING(LoginName, LEN('Input') + 1, 8000) NOT LIKE '%[^0-9]%'
LoginName LIKE 'Input%'
- имя_пользователя начинается с "Input" SUBSTRING(LoginName, LEN('Input') + 1, 8000) NOT LIKE '%[^0-9]%'
- подстрока после "Input" не содержит символ, который не находится в диапазоне 0-9
Если вы изменили строку для поиска с Input
, не забудьте обновить оба экземпляра в запросе.