Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie NOT LIKE in MySQL funktioniert

In MySQL können Sie NOT LIKE verwenden um eine Negation des LIKE durchzuführen Operator. Mit anderen Worten, NOT LIKE gibt das gegenteilige Ergebnis zu LIKE zurück .

Wenn die Zeichenfolge mit dem bereitgestellten Muster übereinstimmt, ist das Ergebnis 0 , andernfalls ist es 1 .

Das Muster muss nicht unbedingt eine wörtliche Zeichenfolge sein. Diese Funktion kann mit Zeichenfolgenausdrücken und Tabellenspalten verwendet werden.

Syntax

Die Syntax sieht so aus:

expr NOT LIKE pat [ESCAPE 'escape_char']

Wobei expr ist die Eingabezeichenfolge und pat ist das Muster, für das Sie die Zeichenfolge testen.

Das optionale ESCAPE -Klausel können Sie ein Escape-Zeichen angeben. Das Standard-Escape-Zeichen ist \ , sodass Sie diese Klausel weglassen können, wenn Sie dies nicht ändern müssen.

Dieser Operator entspricht dem folgenden Vorgang:

NOT (expr LIKE pat [ESCAPE 'escape_char'])

Beispiel 1 – Grundlegende Verwendung

Hier ist ein Beispiel für die Verwendung dieses Operators in einem SELECT Aussage:

SELECT 'Charlie' NOT LIKE 'Char%';

Ergebnis:

+----------------------------+
| 'Charlie' NOT LIKE 'Char%' |
+----------------------------+
|                          0 |
+----------------------------+

Der Rückgabewert ist in diesem Fall 0 was bedeutet, dass die Eingabezeichenfolge tat stimmt eigentlich mit dem Muster überein.

Beispiel 2 – Im Vergleich zu LIKE

Hier wird es mit LIKE verglichen :

SELECT 
  'Charlie' LIKE 'Char%' AS 'Like',
  'Charlie' NOT LIKE 'Char%' AS 'Not Like';

Ergebnis:

+------+----------+
| Like | Not Like |
+------+----------+
|    1 |        0 |
+------+----------+

Beispiel 3 – Eine äquivalente Syntax

Wie bereits erwähnt, NOT LIKE ist das Äquivalent zur Verwendung von NOT logischer Operator gegen LIKE Operator. Folgendes meine ich:

SELECT 
  'Charlie' NOT LIKE 'Char%' AS 'NOT LIKE syntax',
  NOT ('Charlie' LIKE 'Char%') AS 'Equivalent syntax';

Ergebnis:

+-----------------+-------------------+
| NOT LIKE syntax | Equivalent syntax |
+-----------------+-------------------+
|               0 |                 0 |
+-----------------+-------------------+

Beispiel 4 – Ein Datenbankbeispiel

Das LIKE Der Operator wird oft innerhalb eines WHERE verwendet -Klausel eines SELECT Anweisung beim Abfragen einer Datenbank. Daher NOT LIKE können in gleicher Weise verwendet werden.

Wenn wir NOT LIKE verwenden Auf diese Weise werden die Ergebnisse auf die nicht Datensätze eingegrenzt übereinstimmen, aber wir sehen die tatsächlichen Ergebnisse (nicht nur eine 1 oder 0 ).

Hier ist ein Beispiel dafür, wie wir diesen Operator in einer Datenbankabfrage verwenden können:

SELECT ArtistId, ArtistName
FROM Artists
WHERE ArtistName NOT LIKE 'B%';

Ergebnis:

+----------+------------------------+
| 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              |
+----------+------------------------+

In diesem Fall war es eine einfache Abfrage, die alle Künstler zurückgibt, deren Namen nicht Beginnen Sie mit dem Buchstaben B .

Hier ist die vollständige Liste der Künstler in dieser Tabelle:

SELECT ArtistId, ArtistName
FROM Artists;

Ergebnis:

+----------+------------------------+
| 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                |
+----------+------------------------+

Wenn wir also NOT entfernen (d.h. wir verwenden einfach LIKE ) erhalten wir dieses Ergebnis:

SELECT ArtistId, ArtistName
FROM Artists
WHERE ArtistName LIKE 'B%';

Ergebnis:

+----------+----------------+
| ArtistId | ArtistName     |
+----------+----------------+
|        4 | Buddy Rich     |
|       11 | Black Sabbath  |
|       15 | Birds of Tokyo |
|       16 | Bodyjar        |
+----------+----------------+

Beispiel 5 – Escapezeichen mit dem Backslash-Zeichen

Das Backslash-Zeichen (\ ) kann verwendet werden, um eines der Platzhalterzeichen zu maskieren (_ und % ). Hier ist ein Beispiel für eine solche Suche mit und ohne Escape-Zeichen:

SELECT 
  'usr+123' NOT LIKE 'usr_123' AS 'Without escape',
  'usr+123' NOT LIKE 'usr\_123' AS 'With escape';

Ergebnis:

+----------------+-------------+
| Without escape | With escape |
+----------------+-------------+
|              0 |           1 |
+----------------+-------------+

Beispiel 6 – Der ESCAPE Klausel

Sie können auch den ESCAPE verwenden -Klausel, um Ihr eigenes benutzerdefiniertes Escape-Zeichen anzugeben. Hier ist ein Beispiel:

SELECT 
  'usr_123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 1',
  'usr+123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 2';

Ergebnis:

+----------+----------+
| String 1 | String 2 |
+----------+----------+
|        0 |        1 |
+----------+----------+

Beispiel 7 – Numerische Ausdrücke

Dieser Operator kann für numerische Ausdrücke verwendet werden. Hier ist ein Beispiel:

SELECT 
  1234 NOT LIKE '12%',
  1234 NOT LIKE '12_';

Ergebnis:

+---------------------+---------------------+
| 1234 NOT LIKE '12%' | 1234 NOT LIKE '12_' |
+---------------------+---------------------+
|                   0 |                   1 |
+---------------------+---------------------+