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

SQLite COMME

Résumé  :dans ce didacticiel, vous apprendrez à interroger des données basées sur la correspondance de modèles à l'aide de SQLite LIKE opérateur.

Introduction à SQLite LIKE opérateur

Parfois, vous ne connaissez pas exactement le mot-clé complet que vous souhaitez interroger. Par exemple, vous savez peut-être que votre chanson préférée contient le mot elevator mais vous ne connaissez pas exactement le nom.

Pour interroger des données basées sur des informations partielles, vous utilisez le LIKE opérateur dans le WHERE clause du SELECT déclaration comme suit :

SELECT
	column_list
FROM
	table_name
WHERE
	column_1 LIKE pattern;Code language: SQL (Structured Query Language) (sql)

Notez que vous pouvez également utiliser le LIKE opérateur dans le WHERE clause d'autres instructions telles que DELETE et UPDATE .

SQLite fournit deux caractères génériques pour la construction de modèles. Ils sont le signe pourcentage s% et soulignez _ :

  1. Le signe pourcentage s% le caractère générique correspond à n'importe quelle séquence de zéro ou plusieurs caractères.
  2. Le trait de soulignement _ le caractère générique correspond à n'importe quel caractère unique.

Le signe pourcentage s% exemples de caractères génériques

Les s% modèle qui utilise le caractère générique du signe pourcentage ( s% ) correspond à toute chaîne commençant par s par exemple,son et so .

Le %er pattern correspond à n'importe quelle chaîne qui se termine par er comme peter , clever , etc.

Et le %per% le motif correspond à toute chaîne contenant per comme percent et peeper .

Le trait de soulignement _ exemples de caractères génériques

Le h_nt le motif correspond à hunt , hint , etc. Le __pple le motif correspond à topple , supple , tipple , etc.
Notez que SQLite LIKE L'opérateur est insensible à la casse. Cela signifie "A" LIKE "a" est vrai.

Cependant, pour les caractères Unicode qui ne sont pas dans les plages ASCII, le LIKE l'opérateur est sensible à la casse, par exemple, "Ä" LIKE "ä" c'est faux.
Au cas où vous voudriez faire LIKE fonctionne de manière sensible à la casse, vous devez utiliser le PRAGMA suivant :

PRAGMA case_sensitive_like = true;Code language: SQL (Structured Query Language) (sql)

SQLite LIKE exemples

Nous utiliserons la table tracks dans l'exemple de base de données pour la démonstration.

Pour trouver les pistes dont le nom commence par le Wild chaîne littérale, vous utilisez le signe pourcentage s% caractère générique à la fin du modèle.

SELECT
	trackid,
	name	
FROM
	tracks
WHERE
	name LIKE 'Wild%'Code language: SQL (Structured Query Language) (sql)

Essayez-le

Pour trouver les pistes dont le nom se termine par Wild mot, vous utilisez s% caractère générique au début du modèle.

SELECT
	trackid,
	name
FROM
	tracks
WHERE
	name LIKE '%Wild'Code language: SQL (Structured Query Language) (sql)

Essayez-le

Pour trouver les pistes dont les noms contiennent le Wild chaîne littérale, vous utilisez s% caractère générique au début et à la fin du motif :

SELECT
	trackid,
	name	
FROM
	tracks
WHERE
	name LIKE '%Wild%';Code language: SQL (Structured Query Language) (sql)

Essayez-le

L'instruction suivante trouve les pistes dont les noms contiennent :zéro ou plusieurs caractères (% ), suivi de Br , suivi d'un caractère ( _ ), suivi de wn , suivi de zéro caractère ou plus ( s% ).

SELECT
	trackid,
	name
FROM
	tracks
WHERE
	name LIKE '%Br_wn%';Code language: SQL (Structured Query Language) (sql)

Essayez-le

SQLite LIKE avec ESCAPE clause

Si le modèle que vous souhaitez faire correspondre contient s% ou _ , vous devez utiliser un caractère d'échappement dans un ESCAPE facultatif clause comme suit :

column_1 LIKE pattern ESCAPE expression;
Code language: SQL (Structured Query Language) (sql)

Lorsque vous spécifiez le ESCAPE clause, le LIKE l'opérateur évaluera l'expression qui suit le ESCAPE mot-clé à une chaîne composée d'un seul caractère ou d'un caractère d'échappement.

Ensuite, vous pouvez utiliser ce caractère d'échappement dans le modèle pour inclure un signe de pourcentage littéral (%) ou un trait de soulignement (_ ). Le LIKE l'opérateur évalue le signe pourcentage (s% ) ou trait de soulignement (_ ) qui suit le caractère d'échappement sous forme de chaîne littérale, et non de caractère générique.

Supposons que vous souhaitiez faire correspondre la chaîne 10% dans une colonne d'un tableau. Cependant, SQLite interprète le symbole de pourcentage s% comme caractère générique. Par conséquent, vous devez échapper ce symbole de pourcentage s% en utilisant un caractère d'échappement :

column_1 LIKE '%10\%%' ESCAPE '\';Code language: SQL (Structured Query Language) (sql)

Dans cette expression, le LIKE interprète le premier % et le dernier % comme des caractères génériques et le deuxième comme un pourcentage littéral.

Notez que vous pouvez utiliser d'autres caractères comme caractère d'échappement, par exemple, /, @, $.

Prenons l'exemple suivant :

Commencez par créer une table t qui a une colonne :

CREATE TABLE t(
	c TEXT
);Code language: SQL (Structured Query Language) (sql)

Ensuite, insérez quelques lignes dans le tableau t :

INSERT INTO t(c)
VALUES('10% increase'),
	('10 times decrease'),
	('100% vs. last year'),
	('20% increase next year');Code language: SQL (Structured Query Language) (sql)

Ensuite, interrogez les données du t tableau :

SELECT * FROM t;Code language: SQL (Structured Query Language) (sql)
c                     
----------------------
10% increase          
10 times decrease     
100% vs. last year    
20% increase next yearCode language: Shell Session (shell)

Quatrièmement, essayez de trouver la ligne dont la valeur dans le c la colonne contient les 10% chaîne littérale :

SELECT c 
FROM t 
WHERE c LIKE '%10%%';Code language: SQL (Structured Query Language) (sql)

Cependant, il renvoie les lignes dont les valeurs dans la colonne c contiennent 10 :

c                 
------------------
10% increase      
10 times decrease 
100% vs. last year

Cinquièmement, pour obtenir le bon résultat, vous utilisez le ESCAPE clause comme indiqué dans la requête suivante :

SELECT c 
FROM t 
WHERE c LIKE '%10\%%' ESCAPE '\';Code language: SQL (Structured Query Language) (sql)

Voici le jeu de résultats :

c           
------------
10% increaseCode language: Shell Session (shell)

Dans ce tutoriel, vous avez appris à utiliser SQLite LIKE opérateur pour interroger les données en fonction de la correspondance de modèle à l'aide de deux caractères génériques signe pourcentage (s% ) et trait de soulignement (_ ).