我找到了一个用PATINDEX找到下划线位置的解决方案:
DECLARE @a VARCHAR(10)
SET @a = '37_21'
PRINT PATINDEX('%_%', @a) -- return 1 (false)
PRINT PATINDEX('%!%', REPLACE(@a, '_', '!')) -- return 3 (correct)
你有其他想法吗?像逃避下划线角色的方式?
答案 0 :(得分:114)
我总是用括号做{:1}}
答案 1 :(得分:23)
要匹配两个下划线,每个下划线必须加上
'%[__]%' -- matches single _ with anything after
'%[_][_]%' -- matches two consecutive _
答案 2 :(得分:5)
您可以使用[
和]
字符进行转义,例如:
PRINT PATINDEX('%[_]%', '37_21')