多くの場合、データをフィルターするには、条件の完全な一致ではなく、近似値によってサンプリングする必要があります。つまり、たとえば、名前が特定のパターン (正規表現) に一致するか、特定の記号や単語が含まれる製品を検索する場合です。このような目的のために、SQL には近似値を検索する演算子 LIKE があります。このようなパターンを構築するには、メタキャラクター (値の一部を検索するための特殊文字)、つまり「パーセント記号」 (%) またはアスタリスク (*)、「アンダースコア」 (_) または「疑問符」 (?) が使用されます。 、「角括弧」([ ])。
たとえば、名前に Skis という単語が含まれる製品のみに関連するレコードをテーブルから選択してみましょう。これを行うには、適切なテンプレートを作成します。
Run SQLSELECT *
FROM Sumproduct
WHERE Product LIKE '*Skis*'
ご覧のとおり、DBMS は、Product 列に Skis という単語を含む製品が含まれるレコードのみを選択しました。
アンダースコアまたは疑問符は、単語内の 1 文字を置き換えるのに使用されます。 Bikes という単語のすべての母音を「疑問符」 (?) に置き換えて、結果を見てみましょう。
Run SQLSELECT *
FROM Sumproduct
WHERE Product LIKE 'B?k?s'
角括弧メタ文字 ([ ]) は、検索対象の文字セットを同時に指定するために使用されます。
SELECT *
FROM Sumproduct
WHERE City LIKE '[TN]*'
上の例では、City フィールドで都市名が文字 T または N で始まるレコードを選択しました。
また、この場合、その逆のことを行う別のメタキャラクターを使用することもできます。正規表現に感嘆符 (!) を追加しましょう。これは、「等しくない」 (MS Access の場合) または電源記号 (^) (他の DBMS の場合) を意味します。
SELECT *
FROM Sumproduct
WHERE City LIKE '[!TN]*'
つまり、作成した最後のクエリは次のように読み取られます。Sumproduct テーブルからすべての列を選択し、City フィールド内の都市の名前が文字 T または N で始まらないレコードのみを選択します。 「角括弧」メタキャラクター内の文字セットは、テキスト内の 1 つの位置にのみ対応します。
すでに知っている NOT 演算子を使用しても同様の結果が得られますが、感嘆符 (!) を使用するとレコードが短くなります。