Действительно ли возможно использовать КАК в SQL-запросе для поиска шаблонов чисел и букв. Я должен определить местоположение всех записей, где определенные полевые данные имеют шаблон (2 Числа, 1 дефис, 3 Буквы) ## - AAA, я использую SSMS с SQL Server 2008. Любая справка ценилась бы.Спасибо.
Я думаю, LIKE '%[0-9][0-9]-[A-Z][A-Z][A-Z]%'
должен работать.
Я не уверен в ваших требованиях к чувствительности регистра, но вы можете вставить COLLATE, как показано ниже.
select * from
(
SELECT 'GHSASKJK' AS T UNION ALL
SELECT 'HGGH11-ABC' UNION ALL
SELECT 'HGGH11-abc'
) f
WHERE T LIKE '%[0-9][0-9]-[A-Z][A-Z][A-Z]%' COLLATE Latin1_General_CS_AS
Если данные в точности «## - AAA», вы можете просто использовать LIKE '[0-9] [0-9] - [AZ] [AZ] ] [AZ] '
. Если данные где-то содержат эту последовательность, используйте LIKE '% [0-9] [0-9] - [A-Z] [A-Z] [A-Z]%'
».
Обратите внимание, что если ваш столбец проиндексирован, LIKE '[0-9] [0-9] - [AZ] [AZ] [AZ]'
может быть много быстрее, чем любое регулярное выражение UFD или CLR, потому что SQL Server лучше понимает LIKE
и может легче пропускать части индекса, если он никогда не совпадет. Например, все записи, начинающиеся с символа за пределами 0-9, будут немедленно проигнорированы, тогда как регулярное выражение UDF или CLR по-прежнему будет считывать эти значения.
Вы также должны быть в состоянии сделать это с помощью PATINDEX
Select *
From Table
Where PatIndex( '%[0-9][0-9]-[A-Z][A-Z][A-Z]%', Value) > 0
У вас должна быть возможность использовать подобный поиск для этого. Предложение where будет похоже на:
Where YourColumnName Like '%[0-9][0-9]-[a-z][a-z][a-z]%'
*** Это предполагает сортировку без учета регистра
Я бы рекомендовал создать сборку CLR с .Net. Таким образом вы можете создать функцию или SP, которая может использовать регулярное выражение.
Изменить : Даже хотя это можно сделать с помощью LIKE, как указано в других ответах, я все же рекомендую создать сборку. Если ваши данные по какой-то причине изменяются и вам нужен расширенный способ поиска данных, эта сборка регулярного выражения сможет принять это изменение