sql >> Databáze >  >> RDS >> Mysql

Jak NOT LIKE funguje v MySQL

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

  1. Moje databáze MySQL je poškozená... Co teď mám dělat?

  2. Jak zkopírujete záznam v tabulce SQL, ale vyměníte jedinečné ID nového řádku?

  3. seriál v postgresu se zvyšuje, i když jsem přidal na konfliktu nedělat nic

  4. Psaní volitelných parametrů v rámci uložených procedur v MySQL?