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 modelloY
è la stringaZ
è 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.