Mysql
 sql >> Database >  >> RDS >> Mysql

Come funziona NOT LIKE in MySQL

In MySQL, puoi usare NOT LIKE per eseguire una negazione del LIKE operatore. In altre parole, NOT LIKE restituisce il risultato opposto a LIKE .

Se la stringa corrisponde al modello fornito, il risultato è 0 , altrimenti è 1 .

Il modello non deve necessariamente essere una stringa letterale. Questa funzione può essere utilizzata con espressioni stringa e colonne di tabelle.

Sintassi

La sintassi è questa:

expr NOT LIKE pat [ESCAPE 'escape_char']

Dove expr è la stringa di input e pat è il modello per il quale stai testando la stringa.

L'opzione ESCAPE La clausola consente di specificare un carattere di escape. Il carattere di escape predefinito è \ , quindi puoi omettere questa clausola se non è necessario modificarla.

Questo operatore equivale a fare quanto segue:

NOT (expr LIKE pat [ESCAPE 'escape_char'])

Esempio 1 – Utilizzo di base

Ecco un esempio di come utilizzare questo operatore in un SELECT dichiarazione:

SELECT 'Charlie' NOT LIKE 'Char%';

Risultato:

+----------------------------+
| 'Charlie' NOT LIKE 'Char%' |
+----------------------------+
|                          0 |
+----------------------------+

In questo caso, il valore restituito è 0 il che significa che la stringa di input fatto corrispondono effettivamente al modello.

Esempio 2 – Rispetto a LIKE

Qui viene confrontato con LIKE :

SELECT 
  'Charlie' LIKE 'Char%' AS 'Like',
  'Charlie' NOT LIKE 'Char%' AS 'Not Like';

Risultato:

+------+----------+
| Like | Not Like |
+------+----------+
|    1 |        0 |
+------+----------+

Esempio 3:una sintassi equivalente

Come accennato, NOT LIKE equivale a usare NOT logico rispetto a LIKE operatore. Ecco cosa intendo:

SELECT 
  'Charlie' NOT LIKE 'Char%' AS 'NOT LIKE syntax',
  NOT ('Charlie' LIKE 'Char%') AS 'Equivalent syntax';

Risultato:

+-----------------+-------------------+
| NOT LIKE syntax | Equivalent syntax |
+-----------------+-------------------+
|               0 |                 0 |
+-----------------+-------------------+

Esempio 4:un esempio di database

Il LIKE operatore è spesso usato all'interno di un WHERE clausola di un SELECT istruzione quando si interroga un database. Pertanto, NOT LIKE può essere utilizzato allo stesso modo.

Quando usiamo NOT LIKE in questo modo, restringe i risultati solo ai record che non corrisponde, ma vediamo i risultati effettivi (non solo un 1 o 0 ).

Ecco un esempio di come possiamo utilizzare questo operatore all'interno di una query di database:

SELECT ArtistId, ArtistName
FROM Artists
WHERE ArtistName NOT LIKE 'B%';

Risultato:

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

In questo caso, è stata una semplice query che restituisce tutti gli artisti i cui nomi non inizia con la lettera B .

Ecco l'elenco completo degli artisti in quella tabella:

SELECT ArtistId, ArtistName
FROM Artists;

Risultato:

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

Quindi, se rimuoviamo il NOT (cioè usiamo semplicemente LIKE ) otteniamo questo risultato:

SELECT ArtistId, ArtistName
FROM Artists
WHERE ArtistName LIKE 'B%';

Risultato:

+----------+----------------+
| ArtistId | ArtistName     |
+----------+----------------+
|        4 | Buddy Rich     |
|       11 | Black Sabbath  |
|       15 | Birds of Tokyo |
|       16 | Bodyjar        |
+----------+----------------+

Esempio 5 – Fuga con il carattere barra rovesciata

Il carattere barra rovesciata (\ ) può essere utilizzato per evitare qualsiasi carattere jolly (_ e % ). Ecco un esempio di tale ricerca con e senza il carattere di escape:

SELECT 
  'usr+123' NOT LIKE 'usr_123' AS 'Without escape',
  'usr+123' NOT LIKE 'usr\_123' AS 'With escape';

Risultato:

+----------------+-------------+
| Without escape | With escape |
+----------------+-------------+
|              0 |           1 |
+----------------+-------------+

Esempio 6:ESCAPE Clausola

Puoi anche usare ESCAPE clausola per specificare il proprio carattere di escape personalizzato. Ecco un esempio:

SELECT 
  'usr_123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 1',
  'usr+123' NOT LIKE 'usr|_123' ESCAPE '|' AS 'String 2';

Risultato:

+----------+----------+
| String 1 | String 2 |
+----------+----------+
|        0 |        1 |
+----------+----------+

Esempio 7 – Espressioni numeriche

Questo operatore può essere utilizzato su espressioni numeriche. Ecco un esempio:

SELECT 
  1234 NOT LIKE '12%',
  1234 NOT LIKE '12_';

Risultato:

+---------------------+---------------------+
| 1234 NOT LIKE '12%' | 1234 NOT LIKE '12_' |
+---------------------+---------------------+
|                   0 |                   1 |
+---------------------+---------------------+