Mysql
 sql >> база данни >  >> RDS >> Mysql

Как NOT LIKE работи в MySQL

В 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 |
+---------------------+---------------------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Извличане на последния запис във всяка група - MySQL

  2. Код на грешка:1005. Не може да се създаде таблица...' (errno:150)

  3. Как да накарам MySQL да използва INDEX за заявка за преглед?

  4. JSON_UNQUOTE() – Премахване на цитати от JSON документ в MySQL

  5. ALTER TABLE за добавяне на съставен първичен ключ