T SQL RegEx Like оператор - PullRequest
       9

T SQL RegEx Like оператор

0 голосов
/ 27 мая 2020

Мне нужно найти в поле varchar (max) конкретный строковый шаблон. Шаблон имеет вид aa-aaa-0000000000-0, где a может быть любым символом AZ, а 0 может быть любым числом 0-9. Тире являются частью шаблона.

Я уже пробовал довольно много вещей, но не могу понять. Я сейчас нахожусь на этом, но это не дает никаких результатов.

select * 
from MyTable 
where Field 
    like '%[A-Z][A-Z][-][A-Z][A-Z][A-Z][-][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][-][0-9]%'

Ответы [ 3 ]

1 голос
/ 27 мая 2020

Вам необходимо исправить свой шаблон:

  • Измените [A-Z] на [a-Z] (конечно, это зависит от сортировки столбца Field)
  • Добавьте дополнительный подстановочный знак [0-9] для соответствия всем 10 символам в примере.

T- SQl:

SELECT * 
FROM (VALUES ('aa-aaa-0000000000-0')) v (Field)
WHERE Field LIKE '%[a-Z][a-Z][-][a-Z][a-Z][a-Z][-][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][-][0-9]%'
1 голос
/ 27 мая 2020

Вы просто ищете

WHERE Column LIKE '%[a-z][a-z]-[a-z][a-z][a-z]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9]%'
1 голос
/ 27 мая 2020
DECLARE @T AS TABLE (Val VARCHAR(max))
INSERT @T (
                Val
            )
VALUES ( 'aa-aaa-0000000000-0' )

select  * 
from    @T AS T 
where   T.Val like '[A-Z][A-Z][-][A-Z][A-Z][A-Z][-][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][-][0-9]'

Просто добавьте еще [0-9], чтобы получить 10 цифр

...