如何在PATINDEX模式参数中转义下划线字符?

我find了一个用PATINDEX查找下划线位置的解决scheme:

DECLARE @a VARCHAR(10) SET @a = '37_21' PRINT PATINDEX('%_%', @a) -- return 1 (false) PRINT PATINDEX('%!%', REPLACE(@a, '_', '!')) -- return 3 (correct) 

你有其他的想法吗? 像一种逃避下划线字符的方法?

我一直用括号括起来: '%[_]%'

要匹配两个下划线,每个都要加上括号

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

你可以用下面的[]字符来转义:

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