パターン・マッチング

あらゆるパターンはストリングの集合を定義します。 パターンによって示されるストリングの集合に含まれるストリングの場合、LIKE 式は真を返します。 LIKE 式が真を返す場合、NOT LIKE は偽を返し、その逆もまた同様です。 これと同じ意味を持つ式に NOT (string LIKE pattern) があります。

パターンにパーセント記号もしくはアンダースコアーが含まれなければ、そのパターンはストリングのみを表し、この場合 LIKE 式は等号演算子と同じ働きをします。 パターンの中にあるアンダースコアー (_) はマッチする任意の 1 文字を表し、パーセント記号 (%) は 0 文字以上のストリングとマッチします。

例:
  • 'abc' LIKE 'abc'
  • 'abc' LIKE 'a%'
  • 'abc' LIKE '_b_'
  • 'abc' LIKE 'c'

LIKE によるパターン・マッチは常にストリング全体に対して行われます。 よって、ストリング内の任意位置におけるパターンのマッチングを行うには、パーセント記号を先頭と末尾に付ける必要があります。

他の文字にマッチさせることなく、アンダースコアーやパーセント記号のマッチングを行うには、パターン内の各文字の前にエスケープ文字を付ける必要があります。 デフォルトのエスケープ文字はバックスラッシュですが、ESCAPE 節を使い他の文字を指定することもできます。 エスケープ文字そのものをマッチさせるには、エスケープ文字を 2 つ入力します。

% 文字をエスケープするには、以下のようにバックスラッシュを使用します。
   SELECT * FROM table WHERE col LIKE '%90\%%'
バックスラッシュが使えない場合は、以下のように他の ASCII 文字をエスケープ文字として指定します。
   SELECT * FROM table WHERE col LIKE '%90#%%' escape '#'

ESCAPE '' (空の一重引用符) を入力することで、エスケープ文字を未選択にすることもできます。 この場合、パターン内のアンダースコアーおよびパーセント記号の持つ特別な意味を解除することはできません。

Netezza Performance ServerSQL は ILIKE (大文字と小文字を区別しない検索) SQL 演算子をサポートしていません。 しかし、UPPER() または LOWER() を使用すると、常に、大/小文字を区別しない検索を実行できます。 例:
WHERE UPPER(first_name) LIKE 'PAT%'