I MySQL kan du använda NOT LIKE
för att utföra en negation av LIKE
operatör. Med andra ord, NOT LIKE
returnerar det motsatta resultatet till LIKE
.
Om strängen matchar mönstret som tillhandahålls blir resultatet 0
, annars är det 1
.
Mönstret behöver inte nödvändigtvis vara en bokstavlig sträng. Denna funktion kan användas med stränguttryck och tabellkolumner.
Syntax
Syntaxen ser ut så här:
expr NOT LIKE pat [ESCAPE 'escape_char']
Där expr
är inmatningssträngen och pat
är mönstret som du testar strängen mot.
Den valfria ESCAPE
sats låter dig ange ett escape-tecken. Standardtecknet för escape är \
, så du kan utelämna den här klausulen om du inte behöver ändra den.
Denna operatör motsvarar att göra följande:
NOT (expr LIKE pat [ESCAPE 'escape_char'])
Exempel 1 – Grundläggande användning
Här är ett exempel på hur du använder den här operatorn i en SELECT
uttalande:
SELECT 'Charlie' NOT LIKE 'Char%';
Resultat:
+----------------------------+ | 'Charlie' NOT LIKE 'Char%' | +----------------------------+ | 0 | +----------------------------+
I det här fallet är returvärdet 0
vilket betyder att inmatningssträngen gjorde faktiskt matcha mönstret.
Exempel 2 – Jämfört med LIKE
Här jämförs det med LIKE
:
SELECT 'Charlie' LIKE 'Char%' AS 'Like', 'Charlie' NOT LIKE 'Char%' AS 'Not Like';
Resultat:
+------+----------+ | Like | Not Like | +------+----------+ | 1 | 0 | +------+----------+
Exempel 3 – En likvärdig syntax
Som nämnts, NOT LIKE
motsvarar att använda NOT
logisk operator mot LIKE
operatör. Så här menar jag:
SELECT 'Charlie' NOT LIKE 'Char%' AS 'NOT LIKE syntax', NOT ('Charlie' LIKE 'Char%') AS 'Equivalent syntax';
Resultat:
+-----------------+-------------------+ | NOT LIKE syntax | Equivalent syntax | +-----------------+-------------------+ | 0 | 0 | +-----------------+-------------------+
Exempel 4 – Ett databasexempel
LIKE
operatorn används ofta inom en WHERE
sats av en SELECT
uttalande när du frågar efter en databas. Därför NOT LIKE
kan användas på samma sätt.
När vi använder NOT LIKE
på detta sätt begränsar den resultaten till endast de poster som inte matchar, men vi ser de faktiska resultaten (inte bara en 1
eller 0
).
Här är ett exempel på hur vi kan använda den här operatorn i en databasfråga:
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 det här fallet var det en enkel fråga som returnerar alla artister vars namn inte börja med bokstaven B .
Här är hela listan över artister 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å om vi tar bort NOT
(dvs vi använder bara LIKE
) får vi det här resultatet:
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName LIKE 'B%';
Resultat:
+----------+----------------+ | ArtistId | ArtistName | +----------+----------------+ | 4 | Buddy Rich | | 11 | Black Sabbath | | 15 | Birds of Tokyo | | 16 | Bodyjar | +----------+----------------+
Exempel 5 – Undvika med omvänt snedstreck
Omvänt snedstreck (\
) kan användas för att escape alla jokertecken (_
och %
). Här är ett exempel på en sådan sökning med och utan escape-tecknet:
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 | +----------------+-------------+
Exempel 6 – ESCAPE
Klausul
Du kan också använda ESCAPE
klausul för att specificera din egen anpassade escape-karaktär. Här är ett exempel:
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 | +----------+----------+
Exempel 7 – Numeriska uttryck
Denna operator kan användas på numeriska uttryck. Här är ett exempel:
SELECT 1234 NOT LIKE '12%', 1234 NOT LIKE '12_';
Resultat:
+---------------------+---------------------+ | 1234 NOT LIKE '12%' | 1234 NOT LIKE '12_' | +---------------------+---------------------+ | 0 | 1 | +---------------------+---------------------+