TOP

SQL-Leçon 5. Caractères génériques et expressions régulières (LIKE)

Souvent, pour filtrer les données, nous devrons échantillonner non pas en fonction de la correspondance exacte de la condition, mais en fonction d'une valeur approximative. C'est-à-dire lorsque, par exemple, nous recherchons un produit dont le nom correspond à un certain modèle (expression régulière) ou contient certains symboles ou mots. À ces fins, il existe un opérateur LIKE dans SQL, qui recherche des valeurs approximatives. Pour construire un tel modèle, des métacaractères (caractères spéciaux, pour rechercher une partie de la valeur) sont utilisés, à savoir : "signe de pourcentage" (%) ou astérisque (*), "trait de soulignement" (_) ou "point d'interrogation" (?). , "crochets" ([ ]).


1. Signe de pourcentage de métacaractère (%) ou astérisque (*)

Sélectionnons, par exemple, les enregistrements de notre table qui concernent uniquement les produits dont le nom contient le mot Skis. Pour ce faire, nous allons créer un modèle adapté :

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product LIKE '*Skis*'

Comme vous pouvez le constater, le SGBD a sélectionné uniquement les enregistrements dont la colonne Produit contenait des produits contenant le mot Skis.

Cet exemple utilise le métacaractère astérisque (*) car MS Access ne prend pas en charge le « signe de pourcentage » (%) pour l'opérateur LIKE.

2. Métacaractère souligné (_) ou point d'interrogation (?)

Un trait de soulignement ou un point d'interrogation est utilisé pour remplacer un seul caractère dans un mot. Remplaçons toutes les voyelles du mot Bikes par un "point d'interrogation" (?) et voyons le résultat :

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product LIKE 'B?k?s'
Nous avons utilisé le métacaractère « point d'interrogation » (?) car MS Access ne prend pas en charge le « trait de soulignement » (_) pour l'opérateur LIKE.

3. Crochets de métacaractères ([ ])

Le métacaractère crochet ([ ]) est utilisé pour spécifier simultanément un ensemble de caractères sur lesquels effectuer la recherche.

SELECT * 
FROM Sumproduct 
WHERE City LIKE '[TN]*'

Dans l'exemple ci-dessus, nous avons sélectionné des enregistrements dont les noms de villes commencent par la lettre T ou N dans le champ City.

Le métacaractère crochet ([ ]) n'est pas pris en charge dans le dialecte MySQL.

De plus, dans ce cas, nous pouvons utiliser un autre métacaractère qui fait le contraire. Ajoutons un point d'exclamation (!) à notre expression régulière, qui signifiera "pas égal" (pour MS Access) ou un signe de puissance (^) (pour les autres SGBD).

SELECT * 
FROM Sumproduct 
WHERE City LIKE '[!TN]*'

Autrement dit, la dernière requête que nous avons créée sera lue comme suit : sélectionnez toutes les colonnes de la table Sumproduct, et uniquement les enregistrements dont les noms de villes dans le champ City ne commencent pas par les lettres T ou N. De plus, nous notons que l'ensemble Le nombre de lettres dans le métacaractère "crochets" ne correspond qu'à une seule position dans le texte.

Nous pouvons obtenir un résultat similaire si nous utilisons l'opérateur NOT que nous connaissons déjà, mais avec un point d'exclamation (!) l'enregistrement sera plus court.