SQL Serverで特殊文字を含む行を検索する
今日のプログラミング問題のトラブルシューティング中に、特別な構文を使用せずに、%や_などの特殊文字を含む文字列列のLIKE検索を使用できないことに気付きました。問題の解明には数分しかかかりませんでしたが、構文を覚えておくと、それについて書いた方がずっと簡単です。.
そう、この記事は私の利益のためだけにあります。うまくいけば、それは他の人にも役立つでしょう.
「100%」というテキストを含むフィールドを見つけたいとします。そのため、次のクエリをまとめます。
SELECT * FROMテーブル名WHEREフィールド名LIKE '%100 %%'
必要なものではなく、「100」を含むすべての行と「100%」を含むすべての行が表示されます。.
ここでの問題は、SQL Serverがパーセント記号、アンダースコア、および角かっこを特殊文字として使用することです。エスケープせずにLIKEクエリでプレーン文字として使用することはできません。.
角かっこエスケープ
SQL Serverに、内部の文字が通常の文字であることを伝えるために、%または_を角かっこで囲むことができます。.
SELECT * FROMテーブル名どこフィールド名LIKE '%100 [%]%'
T-SQL ESCAPEの構文
または、ESCAPE演算子をクエリに追加して、エスケープする値の前に\文字を追加することもできます。.
SELECT * FROMテーブル名どこフィールド名LIKE '%100 \ %%' ESCAPE '\'
クエリのESCAPE '\'部分は、\の後の文字をワイルドカードとしてではなくリテラル文字として解釈するようにSQLエンジンに指示します。.
個人的には2番目の方法の方が扱いやすいと思います。また、角括弧をエスケープするためにも使用できます。.