Le SQLite like()
La fonction vous permet de comparer une chaîne à un modèle donné. Vous pouvez également spécifier un caractère d'échappement si nécessaire.
Vous pouvez utiliser le like()
fonctionner comme une alternative au LIKE
opérateur (qui permet d'exécuter l'opérateur Y LIKE X [ESCAPE Z]
expression).
Syntaxe
Vous pouvez utiliser l'une des options suivantes :
like(X,Y)
like(X,Y,Z)
X
est le motifY
est la chaîneZ
est un caractère d'échappement facultatif
Exemple de base
Prenez le tableau suivant :
CatId CatName ---------- ----------1 Brush 2 Flutter 3 100%Fluff 4 100$Fluff
Nous pouvons exécuter le code suivant pour renvoyer toutes les lignes où le nom du chat commence par la lettre F :
SELECT * FROM Cats
WHERE like('F%', CatName);
Résultat :
CatId CatName ---------- ----------3 Flutter
Dans cet exemple, j'ai utilisé le %
caractère générique pour indiquer que n'importe quel nombre de caractères peut suivre (y compris zéro caractère) et qu'il peut s'agir de n'importe quel caractère.
Le caractère de soulignement (_)
Voici un exemple qui utilise le trait de soulignement (_
) personnage. Ce caractère générique correspond exactement à un caractère - ni plus, ni moins.
SELECT * FROM Cats
WHERE like('Br_sh', CatName);
Résultat :
CatId CatName ---------- ----------1 Pinceau
Comme mentionné, il ne correspond qu'à un seul caractère. Donc, sur la base de mes données, je ne peux pas faire ce qui suit et m'attendre à des correspondances.
SELECT * FROM Cats
WHERE like('Br_', CatName);
Résultat :
(Ceci est intentionnellement vide en raison de l'absence de résultats).
Caractères d'échappement
Vous pouvez également échapper des caractères si nécessaire. Pour ce faire, ajoutez le caractère d'échappement comme troisième paramètre (et ajoutez-le également avant le caractère que vous souhaitez échapper).
SELECT * FROM Cats WHERE like('100\%F%', CatName, '\');
Résultat :
CatId CatName ---------- ----------3 100%FluffDans ce cas, j'ai échappé au signe de pourcentage (
%
). Je l'ai fait parce que je cherchais des chats qui avaient un signe de pourcentage réel dans leur nom. En fait, dans ce cas, je cherchais un nom de chat très spécifique - un qui commence par 100%F .Si je n'avais pas échappé à cela, il aurait été utilisé comme caractère générique et les résultats auraient été différents.
Voici ce que j'obtiens lorsque je supprime le caractère d'échappement.
SELECT * FROM Cats WHERE like('100%F%', CatName);
Résultat :
CatId CatName ---------- ----------3 100%Fluff 4 100$Fluff
Renvoyer une valeur booléenne
Vous pouvez utiliser le
like()
fonction pour renvoyer un 0 ou 1 , selon qu'il y a correspondance ou non.Cela peut être pratique si vous devez renvoyer toutes les lignes, mais également avec un indicateur indiquant si elles correspondent ou non à vos critères.
Voici un exemple.
SELECT CatName, like('F%', CatName) FROM Cats;
Résultat :
CatName CatName LIKE 'F%'---------- ------------------Brush 0 Flutter 1 100%Fluff 0 100$Fluff 0Dans ce cas, une seule ligne correspondait aux critères, mais nous avons quand même pu voir toutes les autres lignes.
Sensibilité à la casse
Par défaut, le SQLite
like()
La fonction est insensible à la casse pour les caractères ASCII. Cela signifie qu'il correspondra aux caractères majuscules et minuscules, quelle que soit la casse que vous utilisez dans votre modèle.Vous pouvez utiliser le case_sensitive_like Instruction PRAGMA pour effectuer des correspondances sensibles à la casse dans la plage ASCII.
Voir Comment rendre l'opérateur LIKE de SQLite sensible à la casse pour des exemples. Cet article est écrit pour le
LIKE
opérateur, mais il s'applique également à l'opérateurlike()
fonction.