Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment NOT LIKE fonctionne dans MySQL

Dans MySQL, vous pouvez utiliser NOT LIKE pour effectuer une négation du LIKE opérateur. En d'autres termes, NOT LIKE renvoie le résultat opposé à LIKE .

Si la chaîne correspond au modèle fourni, le résultat est 0 , sinon c'est 1 .

Le modèle ne doit pas nécessairement être une chaîne littérale. Cette fonction peut être utilisée avec des expressions de chaîne et des colonnes de table.

Syntaxe

La syntaxe ressemble à ceci :

expr NOT LIKE pat [ESCAPE 'escape_char']

expr est la chaîne d'entrée et pat est le modèle pour lequel vous testez la chaîne.

L'option ESCAPE La clause vous permet de spécifier un caractère d'échappement. Le caractère d'échappement par défaut est \ , vous pouvez donc omettre cette clause si vous n'avez pas besoin de la modifier.

Cet opérateur équivaut à faire ce qui suit :

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

Exemple 1 - Utilisation de base

Voici un exemple d'utilisation de cet opérateur dans un SELECT déclaration :

SELECT 'Charlie' NOT LIKE 'Char%';

Résultat :

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

Dans ce cas, la valeur de retour est 0 ce qui signifie que la chaîne d'entrée a fait correspondent réellement au modèle.

Exemple 2 – Comparé à LIKE

Ici, il est comparé à LIKE :

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

Résultat :

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

Exemple 3 - Une syntaxe équivalente

Comme mentionné, NOT LIKE est l'équivalent d'utiliser le NOT opérateur logique contre le LIKE opérateur. Voici ce que je veux dire :

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

Résultat :

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

Exemple 4 - Un exemple de base de données

Le LIKE l'opérateur est souvent utilisé dans un WHERE clause d'un SELECT déclaration lors de l'interrogation d'une base de données. Par conséquent, NOT LIKE peuvent être utilisés de la même manière.

Lorsque nous utilisons NOT LIKE de cette manière, il réduit les résultats aux seuls enregistrements qui ne le font pas match, mais nous voyons les résultats réels (pas seulement un 1 ou 0 ).

Voici un exemple d'utilisation de cet opérateur dans une requête de base de données :

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

Résultat :

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

Dans ce cas, il s'agissait d'une simple requête qui renvoie tous les artistes dont les noms ne sont pas commencer par la lettre B .

Voici la liste complète des artistes de ce tableau :

SELECT ArtistId, ArtistName
FROM Artists;

Résultat :

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

Donc, si nous supprimons le NOT (c'est-à-dire que nous utilisons simplement LIKE ) nous obtenons ce résultat :

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

Résultat :

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

Exemple 5 - Échappement avec le caractère barre oblique inverse

Le caractère barre oblique inverse (\ ) peut être utilisé pour échapper l'un des caractères génériques (_ et % ). Voici un exemple d'une telle recherche avec et sans le caractère d'échappement :

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

Résultat :

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

Exemple 6 - Le ESCAPE Article

Vous pouvez également utiliser le ESCAPE clause pour spécifier votre propre caractère d'échappement personnalisé. Voici un exemple :

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

Résultat :

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

Exemple 7 – Expressions numériques

Cet opérateur peut être utilisé sur des expressions numériques. Voici un exemple :

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

Résultat :

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