SQLite
 sql >> Base de données >  >> RDS >> SQLite

Fonction SQLite Like() avec exemples

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 motif
  • Y est la chaîne
  • Z 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%Fluff 

Dans 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 0 

Dans 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érateur like() fonction.