回答:
ワイルドカードパターンマッチング文字をリテラル文字として使用できます。ワイルドカード文字をリテラル文字として使用するには、ワイルドカード文字を角かっこで囲みます。次の表は、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 '^';
ESCAPE
句はSQL標準の一部であり、SQL Serverだけでなく、どのDBMSでも機能します。
これらのソリューションは完全に理にかなっています。残念ながら、どちらも期待どおりに機能しませんでした。面倒ではなく、次の回避策を講じました。
select * from information_schema.columns
where replace(table_name,'_','!') not like '%!%'
order by table_name
これは私にとってうまくいきました、エスケープを使用してください
'%\_%'