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 :
- 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]. |
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.
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%';

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 '____-%';

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]%';

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’.
USE AdventureworksLT2019; SELECT LastName, FirstName FROM SalesLT.Customer WHERE LastName LIKE '[C-L]ee'

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]%';

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%';

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 ‘%[ [ ]%’ | [ |
- 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.

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/