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']
Où 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 | +---------------------+---------------------+