カテゴリ:

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

LIKE ALL

1つ以上のパターンとの比較に基づいて、大文字と小文字を区別して文字列を照合します。

操作は LIKE に似ています。入力文字列がすべてのパターンに一致する場合にのみ、これは入力文字列を返します。

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

LIKE

構文

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

引数

必須:

サブジェクト

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

パターン#

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

オプション:

エスケープ文字

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

戻り値

返される値のデータ型は VARCHAR です。

使用上の注意

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

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

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

  • パターン のワイルドカードには、一致として サブジェクト の改行文字(\n)が含まれます。

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

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

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

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

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

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

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

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

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

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

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

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

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