I MySQL kan du bruge NOT LIKE
at udføre en negation af LIKE
operatør. Med andre ord NOT LIKE
returnerer det modsatte resultat til LIKE
.
Hvis strengen matcher det angivne mønster, er resultatet 0
, ellers er det 1
.
Mønsteret behøver ikke nødvendigvis at være en bogstavelig streng. Denne funktion kan bruges med strengudtryk og tabelkolonner.
Syntaks
Syntaksen ser sådan ud:
expr NOT LIKE pat [ESCAPE 'escape_char']
Hvor expr
er inputstrengen og pat
er det mønster, som du tester strengen for.
Den valgfri ESCAPE
klausul giver dig mulighed for at angive et escape-tegn. Standard escape-tegnet er \
, så du kan udelade denne klausul, hvis du ikke har brug for at ændre denne.
Denne operator svarer til at gøre følgende:
NOT (expr LIKE pat [ESCAPE 'escape_char'])
Eksempel 1 – Grundlæggende brug
Her er et eksempel på, hvordan du bruger denne operator i en SELECT
erklæring:
SELECT 'Charlie' NOT LIKE 'Char%';
Resultat:
+----------------------------+ | 'Charlie' NOT LIKE 'Char%' | +----------------------------+ | 0 | +----------------------------+
I dette tilfælde er returværdien 0
hvilket betyder, at inputstrengen gjorde faktisk matche mønsteret.
Eksempel 2 – Sammenlignet med LIKE
Her sammenlignes det med LIKE
:
SELECT 'Charlie' LIKE 'Char%' AS 'Like', 'Charlie' NOT LIKE 'Char%' AS 'Not Like';
Resultat:
+------+----------+ | Like | Not Like | +------+----------+ | 1 | 0 | +------+----------+
Eksempel 3 – En ækvivalent syntaks
Som nævnt NOT LIKE
svarer til at bruge NOT
logisk operator mod LIKE
operatør. Her er hvad jeg mener:
SELECT 'Charlie' NOT LIKE 'Char%' AS 'NOT LIKE syntax', NOT ('Charlie' LIKE 'Char%') AS 'Equivalent syntax';
Resultat:
+-----------------+-------------------+ | NOT LIKE syntax | Equivalent syntax | +-----------------+-------------------+ | 0 | 0 | +-----------------+-------------------+
Eksempel 4 – Et databaseeksempel
LIKE
operator bruges ofte i en WHERE
klausul af en SELECT
sætning, når du forespørger i en database. Derfor NOT LIKE
kan bruges på samme måde.
Når vi bruger NOT LIKE
på denne måde indsnævrer det resultaterne til kun de poster, der ikke match, men vi ser de faktiske resultater (ikke kun en 1
). eller 0
).
Her er et eksempel på, hvordan vi kan bruge denne operator i en databaseforespørgsel:
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName NOT LIKE 'B%';
Resultat:
+----------+------------------------+ | 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 | +----------+------------------------+
I dette tilfælde var det en simpel forespørgsel, der returnerer alle kunstnere, hvis navne ikke start med bogstavet B .
Her er den fulde liste over kunstnere i tabellen:
SELECT ArtistId, ArtistName FROM Artists;
Resultat:
+----------+------------------------+ | 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 | +----------+------------------------+
Så hvis vi fjerner NOT
(dvs. vi bruger bare LIKE
) får vi dette resultat:
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName LIKE 'B%';
Resultat:
+----------+----------------+ | ArtistId | ArtistName | +----------+----------------+ | 4 | Buddy Rich | | 11 | Black Sabbath | | 15 | Birds of Tokyo | | 16 | Bodyjar | +----------+----------------+
Eksempel 5 – Undslippe med omvendt skråstreg
Omvendt skråstreg (\
) kan bruges til at undslippe alle jokertegnene (_
og %
). Her er et eksempel på en sådan søgning med og uden escape-tegnet:
SELECT 'usr+123' NOT LIKE 'usr_123' AS 'Without escape', 'usr+123' NOT LIKE 'usr\_123' AS 'With escape';
Resultat:
+----------------+-------------+ | Without escape | With escape | +----------------+-------------+ | 0 | 1 | +----------------+-------------+
Eksempel 6 – ESCAPE
Klausul
Du kan også bruge ESCAPE
klausul for at specificere dit eget tilpassede escape-karakter. Her er et eksempel:
SELECT 'usr_123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 1', 'usr+123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 2';
Resultat:
+----------+----------+ | String 1 | String 2 | +----------+----------+ | 0 | 1 | +----------+----------+
Eksempel 7 – Numeriske udtryk
Denne operator kan bruges på numeriske udtryk. Her er et eksempel:
SELECT 1234 NOT LIKE '12%', 1234 NOT LIKE '12_';
Resultat:
+---------------------+---------------------+ | 1234 NOT LIKE '12%' | 1234 NOT LIKE '12_' | +---------------------+---------------------+ | 0 | 1 | +---------------------+---------------------+