カテゴリ:

文字列とバイナリ関数 (マッチング/比較)

LIKE ALL

大文字と小文字を区別した比較を実行し、1つ以上の指定されたパターンすべてと文字列を一致させます。この関数を WHERE 句で使用して、一致するものをフィルターします。

Tip

検索最適化サービスを使用すると、この関数を呼び出すクエリのパフォーマンスを向上させることができます。詳細については、 検索最適化サービス をご参照ください。

こちらもご参照ください。

[ NOT ] LIKE

構文

<subject> LIKE ALL (<pattern1> [, <pattern2> ... ] ) [ ESCAPE <escape_char> ]
Copy

引数

必須:

subject

パターンと比較する文字列です。

pattern#

文字列が比較されるパターンです。少なくとも1つのパターンを指定する必要があります。

オプション:

escape_char

ワイルドカードがワイルドカードとしてではなく、通常の文字として解釈されることを示すために、ワイルドカード文字の前に挿入される文字です。

戻り値

BOOLEAN または NULL を返します。一致する場合は TRUE になります。それ以外の場合は、 FALSE を返します。いずれかの引数が NULL の場合は NULL を返します。

使用上の注意

  • パターンマッチに一重引用符やその他の特殊文字を含めるには、 バックスラッシュエスケープシーケンス を使用します。

  • NULL は NULL と一致しません。つまり、サブジェクトが NULL で、パターンの1つが NULLの場合、それは一致とは見なされません。

  • NOT 論理演算子を subject の前に使用すると、大文字と小文字を区別した比較を実行し、指定されたパターンのいずれかに一致しない場合は TRUE を返します。

  • SQL ワイルドカードは pattern でサポートされています。

    • アンダースコア(_)は、任意の1文字に一致します。

    • パーセント記号(%)は、ゼロ個以上の文字のシーケンスに一致します。

  • pattern のワイルドカードには、一致として subject の改行文字(n)が含まれます。

  • パターンが入力文字列(サブジェクト)全体と一致する場合、パターンは一致すると見なされます。文字列内の任意の場所でシーケンスを照合するには、パターンを % (例: %something%)で開始および終了します。

  • 関数がサブクエリで使用される場合、サブクエリは単一の行を返す必要があります。

    例えば、サブクエリが単一の行を返す場合にのみ、次を使用する必要があります。

    SELECT ...
      WHERE x LIKE ALL (SELECT ...)
    
    Copy

照合順序の詳細

upperlowertrim 照合順序仕様のみがサポートされています。 upperlowertrim の組み合わせもサポートされています(例: upper-trimlower-trim)。ただし、ロケールの組み合わせは除きます(例: en-upper)。

いくつかの文字列を含むテーブルを作成します。

CREATE OR REPLACE TABLE like_all_example(name VARCHAR(20));
INSERT INTO like_all_example VALUES
    ('John  Dddoe'),
    ('Joe   Doe'),
    ('John_do%wn'),
    ('Joe down'),
    ('Tom   Doe'),
    ('Tim down'),
    (null);
Copy

このクエリは、ワイルドカード(%)を含むパターンを使用して一致を見つける方法を示しています。

SELECT * 
  FROM like_all_example 
  WHERE name LIKE ALL ('%Jo%oe%','J%e')
  ORDER BY name;
Copy
+-------------+                                                                 
| NAME        |
|-------------|
| Joe   Doe   |
| John  Dddoe |
+-------------+

このクエリは、成功する結果を得るためにすべてのパターンが一致する必要があることを示しています。

SELECT * 
  FROM like_all_example 
  WHERE name LIKE ALL ('%Jo%oe%','J%n')
  ORDER BY name;
Copy
+------+                                                                        
| NAME |
|------|
+------+

このクエリは、エスケープ文字を使用して、通常はワイルドカード(_ および %)である文字をリテラルとして扱うことを指定する方法を示しています。

SELECT * 
  FROM like_all_example 
  WHERE name LIKE ALL ('%J%h%^_do%', 'J%^%wn') ESCAPE '^'
  ORDER BY name;
Copy
+------------+                                                                  
| NAME       |
|------------|
| John_do%wn |
+------------+