SQLite
 sql >> Database >  >> RDS >> SQLite

SQLite Like() Funzione con esempi

SQLite like() La funzione consente di confrontare una stringa con un determinato modello. Puoi anche specificare un carattere di escape, se necessario.

Puoi usare like() funzione in alternativa al LIKE operatore (che ti consente di eseguire Y LIKE X [ESCAPE Z] espressione).

Sintassi

Puoi utilizzare uno dei seguenti:

like(X,Y)
like(X,Y,Z)
  • X è il modello
  • Y è la stringa
  • Z è un carattere di escape opzionale

Esempio di base

Prendi la seguente tabella:

CatId       CatName   
----------  ----------
1           Brush     
2           Flutter   
3           100%Fluff 
4           100$Fluff 

Possiamo eseguire il codice seguente per restituire tutte le righe in cui il nome del gatto inizia con la lettera F:

SELECT * FROM Cats 
WHERE like('F%', CatName);

Risultato:

CatId       CatName   
----------  ----------
3           Flutter   

In questo esempio, ho usato il % carattere jolly per indicare un numero qualsiasi di caratteri che può seguire (inclusi zero caratteri) e che possono essere qualsiasi carattere.

Il carattere di sottolineatura (_)

Ecco un esempio che utilizza il trattino basso (_ ) carattere. Questo carattere jolly corrisponde esattamente a un carattere, né più né meno.

SELECT * FROM Cats 
WHERE like('Br_sh', CatName);

Risultato:

CatId       CatName   
----------  ----------
1           Brush     

Come accennato, corrisponde solo a un singolo carattere. Quindi, in base ai miei dati, non posso fare quanto segue e aspettarmi corrispondenze.

SELECT * FROM Cats 
WHERE like('Br_', CatName);

Risultato:

 

(Questo è intenzionalmente vuoto a causa dell'assenza di risultati).

Caratteri in fuga

Puoi anche sfuggire ai caratteri, se necessario. Per fare ciò, aggiungi il carattere di escape come terzo parametro (e aggiungilo anche prima del carattere di cui vuoi eseguire l'escape).

SELECT * FROM Cats 
WHERE like('100\%F%', CatName, '\');

Risultato:

CatId       CatName   
----------  ----------
3           100%Fluff 

In questo caso sono sfuggito al segno di percentuale (% ). L'ho fatto perché stavo cercando gatti che avessero un segno di percentuale reale all'interno dei loro nomi. In realtà, in questo caso stavo cercando un nome di gatto molto specifico, uno che inizia con 100%F .

Se non l'avessi evitato, sarebbe stato utilizzato come carattere jolly e i risultati sarebbero stati diversi.

Ecco cosa ottengo rimuovendo il carattere di escape.

SELECT * FROM Cats 
WHERE like('100%F%', CatName);

Risultato:

CatId       CatName   
----------  ----------
3           100%Fluff 
4           100$Fluff 

Restituisce un valore booleano

Puoi usare like() funzione per restituire uno 0 o 1 , a seconda che ci sia una corrispondenza o meno.

Questo può essere utile se devi restituire tutte le righe, ma anche con un flag che mostra se corrispondono o meno ai tuoi criteri.

Ecco un esempio.

SELECT 
  CatName,
  like('F%', CatName) 
FROM Cats;

Risultato:

CatName     CatName LIKE 'F%'
----------  ------------------
Brush       0                 
Flutter     1                 
100%Fluff   0                 
100$Fluff   0                 

In questo caso, solo una riga corrispondeva ai criteri, ma abbiamo comunque potuto vedere tutte le altre righe.

Maiuscole/minuscole

Per impostazione predefinita, SQLite like() la funzione non fa distinzione tra maiuscole e minuscole per i caratteri ASCII. Ciò significa che corrisponderà ai caratteri maiuscoli e minuscoli, indipendentemente da quale maiuscolo utilizzi nel tuo modello.

Puoi utilizzare il case_sensitive_like Istruzione PRAGMA per eseguire corrispondenze con distinzione tra maiuscole e minuscole nell'intervallo ASCII.

Vedi Come rendere l'operatore LIKE di SQLite case-sensitive per esempi. Quell'articolo è stato scritto per il LIKE operatore, ma si applica anche a like() funzione.