Создайте SQL 'LIKE' Statment, который ищет определенные образцы цифр и букв - PullRequest
5 голосов
/ 16 июня 2010

Можно ли использовать LIKE в запросе SQL для поиска шаблонов цифр и букв.Мне нужно найти все записи, где данные конкретных полей имеют шаблон (2 числа, 1 дефис, 3 буквы) ## - AAA Я использую SSMS с SQL Server 2008. Любая помощь будет принята.БЛАГОДАРНОСТЬ.

Ответы [ 5 ]

11 голосов
/ 16 июня 2010

Я думаю LIKE '%[0-9][0-9]-[A-Z][A-Z][A-Z]%' должно работать.

Я не уверен в ваших требованиях к чувствительности к регистру, но вы можете вставить COLLATE как показано ниже.

6 голосов
/ 16 июня 2010

Вы также можете выполнить это с помощью PATINDEX .

Select *
From Table
Where PatIndex( '%[0-9][0-9]-[A-Z][A-Z][A-Z]%', Value) > 0
4 голосов
/ 16 июня 2010

Если данные точно "## - AAA", вы можете просто использовать LIKE '[0-9][0-9]-[A-Z][A-Z][A-Z]'. Если данные содержат эту последовательность где-либо, используйте LIKE '%[0-9][0-9]-[A-Z][A-Z][A-Z]%'.

Обратите внимание, что если ваш столбец проиндексирован, LIKE '[0-9][0-9]-[A-Z][A-Z][A-Z]' может быть намного быстрее, чем любое регулярное выражение UFD или CLR, поскольку SQL Server лучше понимает LIKE и может легче пропускать части индекс, если он никогда не будет совпадать. Например, все записи, начинающиеся с символа за пределами 0-9, будут немедленно проигнорированы, тогда как регулярное выражение UDF или CLR все равно будет читать эти значения.

2 голосов
/ 16 июня 2010

Вы должны иметь возможность использовать подобный поиск для этого. Ваше предложение where будет похоже на:

Where YourColumnName Like '%[0-9][0-9]-[a-z][a-z][a-z]%'

*** Это предполагает нечувствительную к регистру сортировку

2 голосов
/ 16 июня 2010

Я бы порекомендовал создать сборку CLR с .Net.Таким образом, вы можете создать функцию или SP, которые могут использовать регулярное выражение.

http://www.simple -talk.com / sql / t-sql-программирования / clr-Assembly-Regex-функции-для-SQL-server-by-example /

Редактировать : Даже если это можно сделать с помощью LIKE, как указано в других ответах, я все равно рекомендую создать сборку.Если по каким-либо причинам ваши данные изменяются, и вам нужен расширенный способ поиска данных, эта сборка регулярных выражений сможет учесть это изменение

...