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


Я нашел решение для нахождения позиции подчеркивания с помощью PATINDEX:

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

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

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

3 60

3 ответа:

Я всегда делал это с скобки: '%[_]%'

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

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

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

вы можете избежать с помощью [ и ] символы вот так:

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