73

PATINDEX でアンダースコアの位置を見つけるための解決策を見つけました:

DECLARE @a VARCHAR(10)  
SET     @a = '37_21'

PRINT PATINDEX('%_%', @a)                    -- return 1 (false)
PRINT PATINDEX('%!%', REPLACE(@a, '_', '!')) -- return 3 (correct)

他のアイデアはありますか?アンダースコア文字をエスケープする方法が好きですか?

4

3 に答える 3

124

私はいつも括弧でそれをしました:'%[_]%'

于 2009-05-14T14:14:36.943 に答える
26

2 つのアンダースコアを一致させるには、それぞれを括弧で囲む必要があります

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

'%[_][_]%' -- matches two consecutive _
于 2012-12-18T15:14:11.593 に答える
6

次のように[および文字を使用してエスケープできます。]

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

于 2012-04-11T19:11:52.287 に答える