问题
I've found a solution for finding the position of an underscore with PATINDEX :
DECLARE @a VARCHAR(10)
SET @a = '37_21'
PRINT PATINDEX('%_%', @a) -- return 1 (false)
PRINT PATINDEX('%!%', REPLACE(@a, '_', '!')) -- return 3 (correct)
Have you other ideas? Like a way to escape the underscore character?
回答1:
I've always done it with brackets: '%[_]%'
回答2:
To match two underscores, each must be bracketed
'%[__]%' -- matches single _ with anything after
'%[_][_]%' -- matches two consecutive _
回答3:
You can escape using the [
and ]
characters like so:
PRINT PATINDEX('%[_]%', '37_21')
来源:https://stackoverflow.com/questions/863534/how-to-escape-underscore-character-in-patindex-pattern-argument