Возвращать sql-строки, в которых поле содержит ТОЛЬКО не буквенно-цифровые символы
Мне нужно выяснить, сколько строк в определенном поле в моей таблице sql-сервера содержат ТОЛЬКО не буквенно-цифровые символы.
Я думаю, что это регулярное выражение, которое мне нужно по строкам [^ a-zA-Z0-9], но я не уверен в точном синтаксисе, который мне нужен, чтобы возвращать строки, если нет действительных буквенно-цифровых символов в есть.
Ответы
Ответ 1
SQL Server не имеет регулярных выражений. Он использует синтаксис соответствия шаблону LIKE, который не совпадает.
Как это происходит, вы близки. Просто нужно использовать + обратные подстановочные знаки и перемещать NOT
WHERE whatever NOT LIKE '%[a-z0-9]%'
Ответ 2
Если у вас короткие строки, вы должны создать несколько шаблонов LIKE ('[^a-zA-Z0-9]'
, '[^a-zA-Z0-9][^a-zA-Z0-9]'
,...) для соответствия строк разной длины. В противном случае вы должны использовать функцию CLR, определенную пользователем, и правильное регулярное выражение - Регулярные выражения упрощают сопоставление образцов и удаление данных.