質問

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

次の where 句のようなものを書いており、最後に _d が付いている実際のエントリを検索できるようにしたいと考えています。

Where Username Like '%_d'
役に立ちましたか?

解決

SQL Server 2000 の LIKE に関する T-SQL リファレンス:

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

あなたの場合:

... LIKE '%[_]d'

他のヒント

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

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

WHERE username LIKE '%[_]d';            -- @Lasse solution
WHERE username LIKE '%$_d' ESCAPE '$';
WHERE username LIKE '%^_d' ESCAPE '^';

これらの解決策は完全に理にかなっています。残念ながら、どちらも期待どおりには機能しませんでした。面倒なことをする代わりに、次のような回避策を講じました。

select * from information_schema.columns 
where replace(table_name,'_','!') not like '%!%'
order by table_name

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top