Создайте SQL 'КАК' Statment, который ищет определенные Шаблоны чисел и букв

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

5
задан Martin Smith 11 October 2011 в 13:23
поделиться

5 ответов

Я думаю, 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
12
ответ дан 18 December 2019 в 06:02
поделиться

Если данные в точности «## - 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 по-прежнему будет считывать эти значения.

4
ответ дан 18 December 2019 в 06:02
поделиться

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

Select *
From Table
Where PatIndex( '%[0-9][0-9]-[A-Z][A-Z][A-Z]%', Value) > 0
7
ответ дан 18 December 2019 в 06:02
поделиться

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

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

*** Это предполагает сортировку без учета регистра

2
ответ дан 18 December 2019 в 06:02
поделиться

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

http://www.simple-talk.com/sql/t-sql-programming/clr-assembly-regex-functions-for-sql-server-by-example/

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

2
ответ дан 18 December 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: