MySQLでは、NOT LIKE
を使用できます LIKE
の否定を実行します オペレーター。言い換えれば、NOT LIKE
LIKE
とは逆の結果を返します 。
文字列が提供されたパターンと一致する場合、結果は0
になります。 、それ以外の場合は1
。
パターンは必ずしもリテラル文字列である必要はありません。この関数は、文字列式とテーブル列で使用できます。
構文
構文は次のようになります:
expr NOT LIKE pat [ESCAPE 'escape_char']
expr
入力文字列であり、pat
文字列をテストするパターンです。
オプションのESCAPE
句を使用すると、エスケープ文字を指定できます。デフォルトのエスケープ文字は\
です 、したがって、これを変更する必要がない場合は、この句を省略できます。
この演算子は、次のことを行うのと同じです。
NOT (expr LIKE pat [ESCAPE 'escape_char'])
例1-基本的な使用法
SELECT
でこの演算子を使用する方法の例を次に示します。 ステートメント:
SELECT 'Charlie' NOT LIKE 'Char%';
結果:
+----------------------------+ | 'Charlie' NOT LIKE 'Char%' | +----------------------------+ | 0 | +----------------------------+
この場合、戻り値は0
です。 これは、入力文字列がしたことを意味します 実際にパターンに一致します。
例2– LIKE
との比較
ここでは、LIKE
と比較されています :
SELECT 'Charlie' LIKE 'Char%' AS 'Like', 'Charlie' NOT LIKE 'Char%' AS 'Not Like';
結果:
+------+----------+ | Like | Not Like | +------+----------+ | 1 | 0 | +------+----------+
例3–同等の構文
前述のように、NOT LIKE
NOT
を使用するのと同じです LIKE
に対する論理演算子 オペレーター。意味は次のとおりです:
SELECT 'Charlie' NOT LIKE 'Char%' AS 'NOT LIKE syntax', NOT ('Charlie' LIKE 'Char%') AS 'Equivalent syntax';
結果:
+-----------------+-------------------+ | NOT LIKE syntax | Equivalent syntax | +-----------------+-------------------+ | 0 | 0 | +-----------------+-------------------+
例4–データベースの例
LIKE
演算子は、WHERE
内でよく使用されます SELECT
の句 データベースを照会するときのステートメント。したがって、NOT LIKE
同じように使用することができます。
NOT LIKE
を使用する場合 このようにして、結果をしないレコードのみに絞り込みます。 一致しますが、実際の結果が表示されます(1
だけではありません) または0
。
データベースクエリ内でこの演算子を使用する方法の例を次に示します。
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName NOT LIKE 'B%';
結果:
+----------+------------------------+ | ArtistId | ArtistName | +----------+------------------------+ | 1 | Iron Maiden | | 2 | AC/DC | | 3 | Allan Holdsworth | | 5 | Devin Townsend | | 6 | Jim Reeves | | 7 | Tom Jones | | 8 | Maroon 5 | | 9 | The Script | | 10 | Lit | | 12 | Michael Learns to Rock | | 13 | Carabao | | 14 | Karnivool | +----------+------------------------+
この場合、名前がではないすべてのアーティストを返す単純なクエリでした。 Bの文字で始まります 。
その表にあるアーティストの完全なリストは次のとおりです。
SELECT ArtistId, ArtistName FROM Artists;
結果:
+----------+------------------------+ | ArtistId | ArtistName | +----------+------------------------+ | 1 | Iron Maiden | | 2 | AC/DC | | 3 | Allan Holdsworth | | 4 | Buddy Rich | | 5 | Devin Townsend | | 6 | Jim Reeves | | 7 | Tom Jones | | 8 | Maroon 5 | | 9 | The Script | | 10 | Lit | | 11 | Black Sabbath | | 12 | Michael Learns to Rock | | 13 | Carabao | | 14 | Karnivool | | 15 | Birds of Tokyo | | 16 | Bodyjar | +----------+------------------------+
したがって、NOT
を削除すると (つまり、LIKE
を使用するだけです )次の結果が得られます:
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName LIKE 'B%';
結果:
+----------+----------------+ | ArtistId | ArtistName | +----------+----------------+ | 4 | Buddy Rich | | 11 | Black Sabbath | | 15 | Birds of Tokyo | | 16 | Bodyjar | +----------+----------------+
例5–バックスラッシュ文字を使用したエスケープ
バックスラッシュ文字(\
)は、任意のワイルドカード文字(_
)をエスケープするために使用できます および%
)。エスケープ文字を使用した場合と使用しない場合のこのような検索の例を次に示します。
SELECT 'usr+123' NOT LIKE 'usr_123' AS 'Without escape', 'usr+123' NOT LIKE 'usr\_123' AS 'With escape';
結果:
+----------------+-------------+ | Without escape | With escape | +----------------+-------------+ | 0 | 1 | +----------------+-------------+
例6– ESCAPE
条項
ESCAPE
を使用することもできます 独自のカスタムエスケープ文字を指定する句。次に例を示します:
SELECT 'usr_123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 1', 'usr+123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 2';
結果:
+----------+----------+ | String 1 | String 2 | +----------+----------+ | 0 | 1 | +----------+----------+
例7–数式
この演算子は数式で使用できます。次に例を示します:
SELECT 1234 NOT LIKE '12%', 1234 NOT LIKE '12_';
結果:
+---------------------+---------------------+ | 1234 NOT LIKE '12%' | 1234 NOT LIKE '12_' | +---------------------+---------------------+ | 0 | 1 | +---------------------+---------------------+>