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?
You can escape using the
[
and]
characters like so:PRINT PATINDEX('%[_]%', '37_21')
I've always done it with brackets:
'%[_]%'
To match two underscores, each must be bracketed