私はPATINDEXでアンダースコアの位置を見つけるための解決策を見つけました:
DECLARE @a VARCHAR(10)
SET @a = '37_21'
PRINT PATINDEX('%_%', @a) -- return 1 (false)
PRINT PATINDEX('%!%', REPLACE(@a, '_', '!')) -- return 3 (correct)
他にアイデアはありますか?アンダースコア文字をエスケープする方法が好きですか?
私はいつも角括弧でそれをやってきました:'%[_]%'
2つのアンダースコアを一致させるには、それぞれを括弧で囲む必要があります
'%[__]%' -- matches single _ with anything after
'%[_][_]%' -- matches two consecutive _
次のように_[
_および_]
_文字を使用してエスケープできます。
PRINT PATINDEX('%[_]%', '37_21')