Essentiels de SQL Server : Utilisation de l’opérateur SQL LIKE

Le opérateur LIKE T-SQL est l’un des ajouts les plus utiles à l’instruction SELECT SQL. Cette dernière récupère un ensemble de résultats, et vous pouvez facilement filtrer les résultats en utilisant des opérateurs d’égalité et la clause WHERE pour sélectionner certaines conditions spécifiques. Mais que faire lorsque vous souhaitez sélectionner des lignes basées sur des valeurs partielles ? C’est là que l’instruction SQL LIKE entre en jeu, et je vais vous montrer comment l’utiliser dans ce tutoriel.

Syntaxe SQL LIKE

Vous pouvez voir la syntaxe de base de l’opérateur LIKE dans la liste suivante :

Publicité

  • Tout d’abord, vous fournissez l’expression que vous souhaitez faire correspondre. Il s’agit généralement d’un nom de colonne.
  • Ensuite, vous pouvez éventuellement spécifier NOT pour que cette expression fonctionne pour toutes les conditions qui ne correspondent pas. Utiliser la condition NOT LIKE n’est pas la manière la plus courante d’utiliser l’opérateur LIKE.
  • Vous devez ensuite fournir le motif à correspondre. Cela peut être littéral ou inclure des caractères génériques qui rendent le processus de correspondance beaucoup plus flexible.
  • Cela peut éventuellement être suivi d’un caractère d’échappement qui peut être utilisé pour rechercher des caractères génériques.
  • Si l’un des arguments n’est pas de type de données chaîne de caractères, SQL Server le convertira en type de données chaîne de caractères.
match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]

SQL LIKE et caractères génériques

Avant d’entrer dans les détails, sachez que la correspondance de modèle SQL LIKE peut inclure des caractères réguliers ainsi que des caractères génériques. Les caractères génériques vous permettent de sélectionner une chaîne de caractères spécifique qui correspond au motif générique.

Pour la correspondance de motif, les caractères réguliers doivent correspondre aux caractères spécifiés dans la chaîne de caractères. Cependant, les caractères génériques peuvent correspondre à n’importe quelle partie de la chaîne de caractères. L’utilisation de caractères génériques rend l’opérateur LIKE plus flexible que les opérateurs de comparaison de chaînes d’égalité réguliers ( = et != ).

L’opérateur LIKE accepte quatre types différents de caractères génériques. Chaque caractère générique effectue une fonction de comparaison différente, et vous pouvez en savoir plus dans le tableau suivant.

Wildcard character Description
% (percent sign) Any string of zero or more characters.
_ (underscore) Any single character.
[ ] Any single character within the specified range [a-f] or set [abcdef].
[^] Any single character not within the specified range [^a-f] or set [^abcdef].
The four different types of wildcard characters to use with the LIKE operator.

L’opérateur LIKE renvoie TRUE si l’expression de correspondance correspond au motif spécifié. Utilisons quelques exemples pour vous montrer comment utiliser l’opérateur SQL LIKE avec la base de données d’exemple AdventureWorksLT2019.

Publicité

Correspondance de plusieurs caractères génériques

Le % joker représente zéro ou plusieurs caractères. La requête suivante récupère toutes les lignes de la table ‘Person.Person’ où le ‘LastName’ commence par la lettre ‘A’.

USE AdventureWorksLT2019;

SELECT FirstName, LastName FROM SalesLT.Customer

WHERE LastName LIKE 'A%';
Matching multiple wildcard characters (Image credit: Petri/Michael Otey)

Correspondance avec un seul caractère générique

Le joker _ représente un seul caractère. L’exemple de requête suivant récupère toutes les lignes de la table ‘SalesLT.Product’ où le ‘Name’ comporte exactement quatre caractères de n’importe quel type suivis d’un tiret.

USE AdventureWorksLT2019;

SELECT ProductID, Name FROM SalesLT.Product

WHERE Name LIKE '____-%';
Single character wildcard matching (Image credit: Petri/Michael Otey)

Correspondance avec un ensemble de caractères génériques

Le [] joker représente n’importe quel caractère unique dans un certain intervalle ou ensemble spécifié. L’énoncé SQL suivant récupère toutes les rangées de la table ‘SalesLT.Product’ où le ‘Name’ commence avec ‘B’, ‘C’ ou ‘D’.

USE AdventureWorksLT2019;

SELECT Name FROM SalesLT.Product

WHERE Name LIKE '[BCD]%';
Wildcard matching for a set of characters (Image credit: Petri/Michael Otey)

Matching de joker pour un intervalle de caractères

Vous pouvez également utiliser la clause LIKE pour soutenir les recherches d’intervalle. Cette requête récupère les noms de famille se terminant par ‘ee’ et commençant avec n’importe lequel des caractères uniques entre les lettres ‘C’ et ‘L’.

Publicité

USE AdventureworksLT2019;

SELECT LastName, FirstName FROM SalesLT.Customer

WHERE LastName LIKE '[C-L]ee'
Wildcard matching for a range of characters (Image credit: Petri/Michael Otey)

Exclure les caractères qui ne font pas partie de l’ensemble spécifié

Le [^] joker représente n’importe quel caractère unique qui n’est pas dans l’intervalle ou ensemble spécifié. La requête suivante récupère toutes les rangées de la table ‘SalesLT.Product’ où le ‘Name’ ne commence pas avec ‘A’, ‘B’ ou ‘C’.

USE AdventureworksLT2019;

SELECT Name FROM SalesLT.Product

WHERE Name LIKE '[^ABC]%';
Excluding characters that are not part of the specified set (Image credit: Petri/Michael Otey)

Utilisation de plusieurs conditions de correspondance générique

La clause LIKE peut également être combinée avec plusieurs caractères génériques dans une seule requête. La requête suivante utilise plusieurs caractères génériques SQL pour récupérer toutes les lignes de la table ‘Person.Person’ où le champ ‘FirstName’ contient la lettre ‘a’ et le champ ‘LastName’ contient n’importe quel caractère suivi de ‘l’.

USE AdventureworksLT2019;

SELECT FirstName, LastName FROM SalesLT.Customer

WHERE FirstName LIKE '%a%' AND LastName LIKE '_l%';
Using multiple wildcard matching conditions (Image credit: Petri/Michael Otey)

Recherche de caractères génériques

La correspondance générique ajoute beaucoup de puissance et de flexibilité à l’opérateur LIKE. Cependant, vous pourriez vous demander comment utiliser LIKE pour faire correspondre l’un de ces caractères génériques eux-mêmes.

Pour ce faire, vous pouvez placer le caractère générique entre crochets, ce qui vous permet d’utiliser un caractère générique comme un caractère littéral. Vous pouvez voir quelques exemples dans le tableau suivant.

Pattern Search value
LIKE ‘%2[%]%’ 2%
LIKE ‘%[_]m%’ _m
LIKE ‘%[ [ ]%’ [
Searching for wildcard characters
  • Le premier exemple correspond au chiffre 2 suivi du caractère générique pourcentage.
  • Le deuxième exemple correspond au caractère souligné suivi de la lettre m.
  • Le troisième exemple est utilisé pour faire correspondre des crochets.
(Image credit: Petri/Michael Otey)

La déclaration SQL LIKE améliore la déclaration SQL SELECT

Vous devriez maintenant mieux comprendre comment vous pouvez utiliser l’opérateur SQL LIKE pour améliorer la puissance et la flexibilité de l’instruction SQL SELECT. Ici, je vous ai également montré comment utiliser la clause LIKE avec divers caractères génériques. Entre la correspondance de plusieurs caractères génériques, l’appariement d’un seul caractère, la correspondance d’un ensemble de caractères ou l’exclusion de caractères des résultats, vous avez vraiment de nombreuses possibilités à portée de main.

Source:
https://petri.com/sql-like/