V MySQL můžete použít NOT LIKE
k provedení negace LIKE
operátor. Jinými slovy, NOT LIKE
vrátí opačný výsledek na LIKE
.
Pokud řetězec odpovídá zadanému vzoru, výsledek je 0
, jinak je to 1
.
Vzor nemusí být nutně doslovný řetězec. Tuto funkci lze použít s řetězcovými výrazy a sloupci tabulky.
Syntaxe
Syntaxe vypadá takto:
expr NOT LIKE pat [ESCAPE 'escape_char']
Kde expr
je vstupní řetězec a pat
je vzor, proti kterému strunu testujete.
Volitelný ESCAPE
klauzule umožňuje zadat znak escape. Výchozí znak escape je \
, takže tuto klauzuli můžete vynechat, pokud ji nepotřebujete měnit.
Tento operátor je ekvivalentem provedení následujícího:
NOT (expr LIKE pat [ESCAPE 'escape_char'])
Příklad 1 – Základní použití
Zde je příklad použití tohoto operátoru v SELECT
prohlášení:
SELECT 'Charlie' NOT LIKE 'Char%';
Výsledek:
+----------------------------+ | 'Charlie' NOT LIKE 'Char%' | +----------------------------+ | 0 | +----------------------------+
V tomto případě je návratová hodnota 0
což znamená, že vstupní řetězec uvedl skutečně odpovídat vzoru.
Příklad 2 – ve srovnání s LIKE
Zde je to porovnáno s LIKE
:
SELECT 'Charlie' LIKE 'Char%' AS 'Like', 'Charlie' NOT LIKE 'Char%' AS 'Not Like';
Výsledek:
+------+----------+ | Like | Not Like | +------+----------+ | 1 | 0 | +------+----------+
Příklad 3 – Ekvivalentní syntaxe
Jak již bylo zmíněno, NOT LIKE
je ekvivalentem použití NOT
logický operátor proti LIKE
operátor. Zde je to, co mám na mysli:
SELECT 'Charlie' NOT LIKE 'Char%' AS 'NOT LIKE syntax', NOT ('Charlie' LIKE 'Char%') AS 'Equivalent syntax';
Výsledek:
+-----------------+-------------------+ | NOT LIKE syntax | Equivalent syntax | +-----------------+-------------------+ | 0 | 0 | +-----------------+-------------------+
Příklad 4 – Příklad databáze
LIKE
Operátor se často používá v rámci WHERE
klauzule SELECT
při dotazu na databázi. Proto NOT LIKE
lze použít stejným způsobem.
Když použijeme NOT LIKE
tímto způsobem zužuje výsledky pouze na ty záznamy, které není shodu, ale vidíme skutečné výsledky (nejen 1
nebo 0
).
Zde je příklad toho, jak můžeme tento operátor použít v databázovém dotazu:
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName NOT LIKE 'B%';
Výsledek:
+----------+------------------------+ | 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 | +----------+------------------------+
V tomto případě se jednalo o jednoduchý dotaz, který vrací všechny interprety, jejichž jména není začíná písmenem B .
Zde je úplný seznam umělců v této tabulce:
SELECT ArtistId, ArtistName FROM Artists;
Výsledek:
+----------+------------------------+ | 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 | +----------+------------------------+
Pokud tedy odstraníme NOT
(tj. používáme pouze LIKE
) dostaneme tento výsledek:
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName LIKE 'B%';
Výsledek:
+----------+----------------+ | ArtistId | ArtistName | +----------+----------------+ | 4 | Buddy Rich | | 11 | Black Sabbath | | 15 | Birds of Tokyo | | 16 | Bodyjar | +----------+----------------+
Příklad 5 – Escape se znakem zpětného lomítka
Znak zpětného lomítka (\
) lze použít k escapování libovolného zástupného znaku (_
a %
). Zde je příklad takového vyhledávání s a bez znaku escape:
SELECT 'usr+123' NOT LIKE 'usr_123' AS 'Without escape', 'usr+123' NOT LIKE 'usr\_123' AS 'With escape';
Výsledek:
+----------------+-------------+ | Without escape | With escape | +----------------+-------------+ | 0 | 1 | +----------------+-------------+
Příklad 6 – ESCAPE
Ustanovení
Můžete také použít ESCAPE
klauzule k určení vlastního znaku escape. Zde je příklad:
SELECT 'usr_123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 1', 'usr+123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 2';
Výsledek:
+----------+----------+ | String 1 | String 2 | +----------+----------+ | 0 | 1 | +----------+----------+
Příklad 7 – Číselné výrazy
Tento operátor lze použít na číselné výrazy. Zde je příklad:
SELECT 1234 NOT LIKE '12%', 1234 NOT LIKE '12_';
Výsledek:
+---------------------+---------------------+ | 1234 NOT LIKE '12%' | 1234 NOT LIKE '12_' | +---------------------+---------------------+ | 0 | 1 | +---------------------+---------------------+