Поиск определенного имени, сопровождаемого любым номером (или без номера) - PullRequest
0 голосов
/ 19 марта 2019

Я хочу найти поле, соответствующее имени, за которым следует номер переменного размера (в том числе без номера), но я не вижу, как использовать подстановочные знаки в PATINDEX и LIKE для обнаружения неизвестного количества цифр.

Это регулярное выражение, которое я хотел бы проверить: MYNAME [1-9] *

Он должен распознавать MYNAME, MYNAME5, MYNAME12, MYNAME275, ...

Он не должен распознавать ДРУГОЕ ИМЯ, MYNAMEXX12, MYNAME12X5, MYNAME12X

PATINDEX и LIKE не распознают * в регулярном выражении для обозначения переменного числа цифр.

Известен ли вам способ поиска шаблона, в котором деталь имеет переменный размер?.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 19 марта 2019
DECLARE @Test TABLE (
    Field   VARCHAR(32)
)



 INSERT @Test( Field )
    VALUES
    ('MYNAME'),
    ('MYNAME5'),
    ('MYNAME12'),
    ('MYNAME275'),
    ('MYNAME275TEXT')


SELECT *
FROM @Test
WHERE (
    (   Field = 'MYNAME' 
        OR Field LIKE 'MYNAME[0-9]%'
    )
    AND Field NOT LIKE 'MYNAME[0-9]%[^0-9]%'
    )
1 голос
/ 19 марта 2019

Немного дикой карты (geddit?) Угадайте, однако, возможно, это?

SELECT *
FROM (VALUES('MYNAME'),('MYNAME5'),('MYNAME12'),('MYNAME275'),('MYNAME654A'))V(N)
WHERE V.N = 'MYNAME'
   OR (V.N LIKE 'MYNAME[0-9]%'
  AND  V.N NOT LIKE 'MYNAME[0-9]%[^0-9]');
...