expr LIKE pat [ESCAPE 'escape_char']

expr LIKE pat [ESCAPE 'escape_char']

SQL の簡単な正規の比較式を使用してのパターン マッチング。1 ( TRUE ) または 0 ( FALSE ) を戻します。expr もしくは pat のどちらかが NULL である場合、結果は NULL になります。

パターンはリテラル ストリングである必要があります。例えば、文字列式、またはテーブル カラムとして指定するのでもかまいません。

SQL 標準に当たり、LIKE は文字ごとにマッチングを行うので、= 比較演算子とは異なる結果を生成することができます。

mysql> SELECT 'ä' LIKE 'ae' COLLATE latin1_german2_ci;
+-----------------------------------------+
| 'ä' LIKE 'ae' COLLATE latin1_german2_ci |
+-----------------------------------------+
|                                       0 |
+-----------------------------------------+
mysql> SELECT 'ä' = 'ae' COLLATE latin1_german2_ci;
+--------------------------------------+
| 'ä' = 'ae' COLLATE latin1_german2_ci |
+--------------------------------------+
|                                    1 |
+--------------------------------------+

LIKE では、次のふたつのワイルドカード文字をパターンで使用することができます :

文字 説明
% 0 からあらゆる数の文字でもマッチする。
_ ひとつの文字を明確にマッチする。
mysql> SELECT 'David!' LIKE 'David_';
        -> 1
mysql> SELECT 'David!' LIKE '%D%v%';
        -> 1

ワイルドカード文字のリテラル インスタンスをテストするには、エスケープ文字で優先させます。ESCAPE 文字を指定しない場合は、‘\’ が仮定されます。

ストリング 説明
\% %’ 文字をひとつマッチする。
\_ _’ 文字をひとつマッチする。
mysql> SELECT 'David!' LIKE 'David\_';
        -> 0
mysql> SELECT 'David_' LIKE 'David\_';
        -> 1

異なるエスケープ文字を指定するには、ESCAPE 句を使用します :

mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|';
        -> 1

エスケープ シーケンスは空か、1 文字長である必要があります。MySQL 5.1.2 からは、NO_BACKSLASH_ESCAPES SQL モードを有効にすると、シーケンスを空にすることはできません。

次のふたつのステートメントは、オペランドのひとつがバイナリ ストリングでない限り、文字列比較は大文字小文字の区別をしないことを示しています :

mysql> SELECT 'abc' LIKE 'ABC';
        -> 1
mysql> SELECT 'abc' LIKE BINARY 'ABC';
        -> 0

MySQL では、LIKE を数値式で使用することができます。( 標準の SQL LIKE のエクステンションです ) 。

mysql> SELECT 10 LIKE '1%';
        -> 1

注記 :MySQL は C エスケープ構文をストリングで使用するため ( 例えば、‘\n’ で改行文字を表現 ) 、LIKE ストリングで使用する ‘\’ はすべて二重にする必要があります。例えば、‘\n’ を検索するには、‘\\n’ と指定します。‘\’ の検索には、‘\\\\’ と指定します。これは、バックスラッシュがパーサによってストリップされ、そしてパターンのマッチが実行された時にもストリップされるため、ひとつのバックスラッシュを残してマッチさせるためです。( 例外 :パターン ストリングの最後では、バックスラッシュは ‘\\’ と指定できます。ストリングの末尾では、エスケープの後に連なるものがないため、バックスラッシュはそのもので独立することができます ) 。