アンダースコア文字をエスケープするにはどうすればよいですか?
次の where 句のようなものを書いていて、最後に _d がある実際のエントリを見つけられるようにしたいと考えています。
Where Username Like '%_d'
アンダースコア文字をエスケープするにはどうすればよいですか?
次の where 句のようなものを書いていて、最後に _d がある実際のエントリを見つけられるようにしたいと考えています。
Where Username Like '%_d'
ワイルドカード パターン マッチング文字をリテラル文字として使用できます。ワイルドカード文字をリテラル文字として使用するには、ワイルドカード文字を括弧で囲みます。次の表に、LIKE キーワードと [ ] ワイルドカード文字の使用例をいくつか示します。
あなたの場合:
... LIKE '%[_]d'
明らかに@Lasseソリューションは正しいですが、問題を解決する別の方法があります。T-SQL演算子は、次の文字をパターンにエスケープする文字を宣言できるLIKE
オプションのESCAPE句を定義します。
あなたの場合、次のWHERE句は同等です。
WHERE username LIKE '%[_]d'; -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';
これは私にとってはうまくいきました。エスケープを使用してください
'%\_%'
これらはどれも SSIS v18.0 ではうまくいきませんでし
WHERE CHARINDEX('_', thingyoursearching) < 1
た。アンダースコアのあるものを見つけたい場合は、それを裏返してください:
WHERE CHARINDEX('_', thingyoursearching) > 0