Problème :
Vous souhaitez trouver une sous-chaîne correspondant à un modèle dans une chaîne.
Exemple :
Notre base de données a une table nommée client avec des données dans les colonnes suivantes :id
, first_name
, last_name
, et city
.
identifiant | prénom | nom_de_famille | ville |
---|---|---|---|
1 | Alan | Watson | Madrid |
2 | Lisa | Noir | Singapour |
3 | Laura | Williams | Seattle |
4 | Milan | Brique | Séoul |
Voyons quelques exemples de correspondance de modèles en SQL.
Exemple 1 :
Affichons le prénom, le nom et la ville de chaque client dont le nom de ville commence par la lettre "S".
Solution :
SELECT last_name, first_name, city FROM customer WHERE city LIKE 'S%';
nom_de_famille | prénom | ville |
---|---|---|
Lisa | Noir | S inapore |
Milan | Brique | S eoul |
Laura | Williams | S manger |
Nous avons utilisé le caractère générique %, qui représente zéro ou plusieurs caractères inconnus. Ce caractère générique peut être utilisé n'importe où dans la chaîne.
Exemple 2 :
Montrons le prénom, le nom et la ville de chaque client dont le nom de ville contient exactement cinq caractères.
Solution :
SELECT last_name, first_name, city FROM customer WHERE city LIKE '_____';
Voici le résultat :
nom_de_famille | prénom | ville |
---|---|---|
Milan | Brique | Séoul |
Le caractère générique de soulignement peut être utilisé pour représenter un seul caractère inconnu. Ainsi, en utilisant cinq d'entre eux à la suite, nous pouvons représenter toutes les chaînes de cinq caractères. Dans notre exemple, la seule ville correspondant à cette description est Séoul.
Exemple 3 :
Montrons le prénom, le nom et la ville de chaque client dont la ville commence par la lettre "S" et a la lettre "o" comme avant-dernier caractère.
Solution :
SELECT last_name, first_name, city FROM customer WHERE city LIKE 'S%o__';
Voici le résultat :
nom_de_famille | prénom | ville |
---|---|---|
Lisa | Noir | S ingapo re |
Milan | Brique | S eo ul |
La requête n'a renvoyé que deux enregistrements :Lisa Black de S ingapo re et Milan Brick de S eo ul. Ces villes correspondent au modèle donné. Ici, nous avons combiné les deux caractères génériques pour générer un modèle plus spécifique :toutes les chaînes commençant par une lettre majuscule "S" et contenant un nombre quelconque d'autres caractères après cela, tant que l'avant-dernier caractère est une lettre minuscule "o". '
Discussion :
Si vous souhaitez sélectionner des enregistrements dans lesquels une chaîne correspond à un modèle spécifique, vous pouvez utiliser un LIKE
clause comme condition dans un WHERE
clause. Après WHERE
, indiquez le nom de la colonne (par exemple, city
) suivi d'un LIKE
clause spécifiant le modèle de chaîne (par exemple, 'S%o__'
) à rechercher.
Comme nous l'avons vu dans les exemples, vous pouvez utiliser deux caractères spéciaux appelés wildcards pour représenter des caractères inconnus :
- Le caractère générique '%' indique zéro ou plusieurs caractères.
- Le caractère générique '_' désigne n'importe quel caractère unique.
Vous pouvez combiner ces caractères génériques pour obtenir des résultats vraiment puissants. Vous pouvez également chaîner plus d'un LIKE
état. Enfin, vous pouvez utiliser le NOT
opérateur pour trouver des chaînes qui ne sont pas correspondre au modèle donné.