413

アンダースコア文字をエスケープするにはどうすればよいですか?

次の where 句のようなものを書いていて、最後に _d がある実際のエントリを見つけられるようにしたいと考えています。

Where Username Like '%_d'
4

7 に答える 7

634

LIKE の T-SQL リファレンス:

ワイルドカード パターン マッチング文字をリテラル文字として使用できます。ワイルドカード文字をリテラル文字として使用するには、ワイルドカード文字を括弧で囲みます。次の表に、LIKE キーワードと [ ] ワイルドカード文字の使用例をいくつか示します。

あなたの場合:

... LIKE '%[_]d'
于 2008-08-08T11:59:36.340 に答える
229

明らかに@Lasseソリューションは正しいですが、問題を解決する別の方法があります。T-SQL演算子は、次の文字をパターンにエスケープする文字を宣言できるLIKEオプションのESCAPE句を定義します。

あなたの場合、次のWHERE句は同等です。

WHERE username LIKE '%[_]d';            -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';
于 2012-05-02T14:20:40.310 に答える
4

これは私にとってはうまくいきました。エスケープを使用してください '%\_%'

于 2018-10-08T12:59:46.140 に答える
1

これらはどれも SSIS v18.0 ではうまくいきませんでし

WHERE CHARINDEX('_', thingyoursearching) < 1

た。アンダースコアのあるものを見つけたい場合は、それを裏返してください:

WHERE CHARINDEX('_', thingyoursearching) > 0

于 2019-06-28T18:58:42.450 に答える