- カテゴリ:
文字列とバイナリ関数 (マッチング/比較)
LIKE¶
パターンとの比較に基づいて、大文字と小文字を区別して文字列を照合します。大文字と小文字を区別しないマッチングでは、代わりに ILIKE を使用します。
サブジェクト文字列がパターンに一致する場合、サブジェクト文字列を返します。
LIKE、 ILIKE、 RLIKE はすべて同様の操作を実行します。ただし、 RLIKE は、LIKE および ILIKEで使用される SQL パターン構文の代わりに POSIX EXE (拡張正規表現)構文を使用します。
構文¶
<subject> LIKE <pattern> [ ESCAPE <escape> ]
LIKE( <subject> , <pattern> [ , <escape> ] )
引数¶
必須:
subject
一致するサブジェクトです。通常、これは VARCHAR ですが、他のデータ型も使用できます。
pattern
一致するパターンです。通常、これは VARCHAR ですが、他のデータ型も使用できます。
オプション:
escape
ワイルドカードをワイルドカードとしてではなく通常の文字として解釈されることを示すために、ワイルドカード文字の前に挿入される文字です。
戻り値¶
返される値のデータ型は、 subject
のデータ型と同じです。
使用上の注意¶
SQL ワイルドカードは
pattern
でサポートされています。アンダースコア(
_
)は、任意の1文字に一致します。パーセント記号(
%
)は、ゼロ個以上の文字のシーケンスに一致します。
pattern
のワイルドカードには、一致としてsubject
の改行文字(\n
)が含まれます。LIKE パターンマッチングは文字列全体をカバーします。文字列内の任意の場所でシーケンスを照合するには、パターンを
%
で開始および終了します。NULL は NULL と一致しません。つまり、サブジェクトが NULL で、パターンが NULLの場合、一致とは見なされません。
デフォルトのエスケープ文字はありません。
円記号をエスケープ文字として使用する場合、 ESCAPE 句で円記号のエスケープを指定する必要があります。例えば、次のコマンドは、エスケープ文字がバックスラッシュであることを指定し、そのエスケープ文字を使用してリテラルとして「%」を検索します(エスケープ文字なしでは、「%」はワイルドカードとして扱われます)。
'SOMETHING%' LIKE '%\\%%' ESCAPE '\\';
エスケープ文字の使用例、特にエスケープ文字としてのバックスラッシュについては、 例 をご参照ください。
照合の詳細¶
Arguments with collation specifications are currently not supported.
例¶
次の例は、 LIKE
、 NOT LIKE
、ワイルドカード文字 %
の使用を示しています。
CREATE OR REPLACE TABLE like_ex(subject varchar(20)); INSERT INTO like_ex VALUES ('John Dddoe'), ('Joe Doe'), ('John_down'), ('Joe down'), ('Elaine'), (''), -- empty string (null);SELECT subject FROM like_ex WHERE subject LIKE '%Jo%oe%' ORDER BY subject; +-------------+ | SUBJECT | |-------------| | Joe Doe | | John Dddoe | +-------------+SELECT subject FROM like_ex WHERE subject LIKE '%J%h%^_do%' ESCAPE '^' ORDER BY subject; +-----------+ | SUBJECT | |-----------| | John_down | +-----------+SELECT subject FROM like_ex WHERE subject NOT LIKE 'John%' ORDER BY subject; +-----------+ | SUBJECT | |-----------| | | | Elaine | | Joe Doe | | Joe down | +-----------+SELECT subject FROM like_ex WHERE subject NOT LIKE '' ORDER BY subject; +-------------+ | SUBJECT | |-------------| | Elaine | | Joe Doe | | Joe down | | John Dddoe | | John_down | +-------------+
次の例では、 ESCAPE 句を使用しています。
INSERT INTO like_ex (subject) VALUES ('100 times'), ('1000 times'), ('100%');エスケープ文字がない場合、パーセント記号(「%」)はワイルドカードとして扱われます。
SELECT * FROM like_ex WHERE subject LIKE '100%' ORDER BY 1; +------------+ | SUBJECT | |------------| | 100 times | | 100% | | 1000 times | +------------+エスケープ文字を使用すると、パーセント記号(「%」)はリテラルとして扱われます。
SELECT * FROM like_ex WHERE subject LIKE '100^%' ESCAPE '^' ORDER BY 1; +---------+ | SUBJECT | |---------| | 100% | +---------+
次の例では、バックスラッシュがエスケープ文字である ESCAPE 句を使用しています。バックスラッシュ自体は ESCAPE 句と式の両方でエスケープする必要があることに注意してください。
SELECT * FROM like_ex WHERE subject LIKE '100\\%' ESCAPE '\\' ORDER BY 1; +---------+ | SUBJECT | |---------| | 100% | +---------+