В MySQL можете да използвате NOT LIKE
за да извършите отрицание на LIKE
оператор. С други думи, NOT LIKE
връща обратния резултат на LIKE
.
Ако низът съвпада с предоставения шаблон, резултатът е 0
, в противен случай е 1
.
Моделът не е задължително да е буквален низ. Тази функция може да се използва с низови изрази и колони на таблицата.
Синтаксис
Синтаксисът е така:
expr NOT LIKE pat [ESCAPE 'escape_char']
Където expr
е входният низ и pat
е моделът, срещу който тествате низа.
Незадължителният ESCAPE
клаузата ви позволява да зададете escape символ. Ескпиращият символ по подразбиране е \
, така че можете да пропуснете тази клауза, ако не е необходимо да я променяте.
Този оператор е еквивалент на извършване на следното:
NOT (expr LIKE pat [ESCAPE 'escape_char'])
Пример 1 – Основна употреба
Ето пример за това как да използвате този оператор в SELECT
изявление:
SELECT 'Charlie' NOT LIKE 'Char%';
Резултат:
+----------------------------+ | 'Charlie' NOT LIKE 'Char%' | +----------------------------+ | 0 | +----------------------------+
В този случай връщаната стойност е 0
което означава, че входният низ направи всъщност съвпадат с модела.
Пример 2 – В сравнение с LIKE
Тук се сравнява с LIKE
:
SELECT 'Charlie' LIKE 'Char%' AS 'Like', 'Charlie' NOT LIKE 'Char%' AS 'Not Like';
Резултат:
+------+----------+ | Like | Not Like | +------+----------+ | 1 | 0 | +------+----------+
Пример 3 – Еквивалентен синтаксис
Както споменахме, NOT LIKE
е еквивалент на използването на NOT
логически оператор срещу LIKE
оператор. Ето какво имам предвид:
SELECT 'Charlie' NOT LIKE 'Char%' AS 'NOT LIKE syntax', NOT ('Charlie' LIKE 'Char%') AS 'Equivalent syntax';
Резултат:
+-----------------+-------------------+ | NOT LIKE syntax | Equivalent syntax | +-----------------+-------------------+ | 0 | 0 | +-----------------+-------------------+
Пример 4 – Пример за база данни
LIKE
операторът често се използва в WHERE
клауза на SELECT
изявление при запитване към база данни. Следователно, NOT LIKE
може да се използва по същия начин.
Когато използваме NOT LIKE
по този начин тя стеснява резултатите само до онези записи, които не съвпадат, но виждаме действителните резултати (не само 1
или 0
).
Ето пример за това как можем да използваме този оператор в заявка към база данни:
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName NOT LIKE 'B%';
Резултат:
+----------+------------------------+ | 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 | +----------+------------------------+
В този случай това беше проста заявка, която връща всички изпълнители, чиито имена не започнете с буквата B .
Ето пълния списък с изпълнители в тази таблица:
SELECT ArtistId, ArtistName FROM Artists;
Резултат:
+----------+------------------------+ | 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 | +----------+------------------------+
Така че, ако премахнем NOT
(т.е. ние просто използваме LIKE
) получаваме този резултат:
SELECT ArtistId, ArtistName FROM Artists WHERE ArtistName LIKE 'B%';
Резултат:
+----------+----------------+ | ArtistId | ArtistName | +----------+----------------+ | 4 | Buddy Rich | | 11 | Black Sabbath | | 15 | Birds of Tokyo | | 16 | Bodyjar | +----------+----------------+
Пример 5 – Бягство с обратна наклонена черта
Обратната наклонена черта (\
) може да се използва за екраниране на всеки от заместващите знаци (_
и %
). Ето пример за такова търсене със и без escape символа:
SELECT 'usr+123' NOT LIKE 'usr_123' AS 'Without escape', 'usr+123' NOT LIKE 'usr\_123' AS 'With escape';
Резултат:
+----------------+-------------+ | Without escape | With escape | +----------------+-------------+ | 0 | 1 | +----------------+-------------+
Пример 6 – ESCAPE
Клауза
Можете също да използвате ESCAPE
клауза, за да посочите свой собствен персонализиран екраниращ символ. Ето един пример:
SELECT 'usr_123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 1', 'usr+123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 2';
Резултат:
+----------+----------+ | String 1 | String 2 | +----------+----------+ | 0 | 1 | +----------+----------+
Пример 7 – Числови изрази
Този оператор може да се използва за числови изрази. Ето един пример:
SELECT 1234 NOT LIKE '12%', 1234 NOT LIKE '12_';
Резултат:
+---------------------+---------------------+ | 1234 NOT LIKE '12%' | 1234 NOT LIKE '12_' | +---------------------+---------------------+ | 0 | 1 | +---------------------+---------------------+