2012年5月11日金曜日

SQL Serverでの特殊文字を使って行の検索

プログラミングの問題のトラブルシューティングを行いながら、今日私はあなたに特別な構文を使用せずに%や_などの特殊文字を含む文字列の列のLIKE検索が使用できないことに気づいた。問題を把握するだけで数分かかったが、次の構文を覚えておくことは、常にあなたがそれについて書けば簡単です。

そうです、この記事は私の利益のためだけのものです。うまくいけば、それはあまりにも他の誰かを助ける。

例えば、あなたがテキスト"100%"を含む任意のフィールドを検索したいと言うので、このクエリをまとめる。

テーブル名フィールド名LIKE'%100%%"します。SELECT * FROM

代わりにあなたが欲しいものを、あなたは"100 ''だけでなく、含まれている行を"100%"を含むすべての行が得られます。

ここでの問題は、SQL Serverは、パーセント記号、アンダースコア、および特殊文字のような大括弧を使用していることです。あなたは、単にそれらをエスケープせずにLIKEクエリのプレーン文字として使用することはできません。

スクエアブラケットのエスケープ

あなたは、文字の内側には、通常の文字であることをSQL Serverに指示する、角括弧で%や_を囲むことができます。

WHEREフィールド名LIKE'%100テーブル名します。SELECT * FROM [%]%'

T - SQLのエスケープ構文

また、あなたのクエリにESCAPE演算子を付加し、エスケープしたい値の前に文字を追加することができます。

WHEREフィールド名LIKE'%100 %の%'ESCAPE''tablenameはします。SELECT * FROM

ESCAPEは、クエリの''の部分はリテラル文字としてではなく、ワイルドカードとしての後に文字を解釈するためにSQLエンジンに指示します。

個人的に私は第二の方法に対処するため容易に見つけ、あなたにも角括弧をエスケープするために使用することができます。

0 件のコメント:

コメントを投稿