Подтвердить что ты не робот

Как избежать символа подчеркивания в аргументе шаблона PATINDEX?

Я нашел решение для поиска позиции подчеркивания с PATINDEX:

DECLARE @a VARCHAR(10)  
SET     @a = '37_21'

PRINT PATINDEX('%_%', @a)                    -- return 1 (false)
PRINT PATINDEX('%!%', REPLACE(@a, '_', '!')) -- return 3 (correct)

Есть ли у вас другие идеи? Как способ избежать символа подчеркивания?

4b9b3361

Ответ 1

Я всегда делал это с помощью скобок: '%[_]%'

Ответ 2

Чтобы совместить два символа подчеркивания, каждый из них будет заключен в скобки

'%[__]%' -- matches single _ with anything after

'%[_][_]%' -- matches two consecutive _

Ответ 3

Вы можете избежать использования символов [ и ]:

PRINT PATINDEX('%[_]%', '37_21')