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