Mot-clé MySQL REGEXP
Le mot-clé REGEXP
de MySQL est utilisé pour la recherche de motifs à l'aide d'expressions régulières. Il vous permet de rechercher des motifs complexes dans des chaînes de caractères au sein des tableaux de votre base de données.
Utilisation
Le mot-clé REGEXP
est généralement utilisé dans la clause WHERE
pour filtrer les enregistrements en fonction de la correspondance d'une chaîne de caractères avec un modèle d'expression régulière spécifié. Il s'agit d'un outil puissant pour la recherche de texte et la reconnaissance des formes. Les expressions régulières de MySQL sont basées sur le standard POSIX et peuvent différer légèrement des autres implémentations de regex.
SELECT column_name
FROM table_name
WHERE column_name REGEXP 'pattern';
Dans cette syntaxe, REGEXP 'pattern'
vérifie si column_name
correspond à l'expression régulière donnée. Notez que REGEXP
est insensible à la casse par défaut. Pour effectuer une recherche sensible à la casse, utilisez le mot-clé BINARY
:
SELECT column_name
FROM table_name
WHERE BINARY column_name REGEXP 'pattern';
Exemples
1. Correspondance de motifs de base
SELECT *
FROM products
WHERE product_name REGEXP '^C';
Cet exemple sélectionne tous les tableaux du tableau products
où product_name
commence par la lettre "C". Le modèle '^C'
utilise ^
pour indiquer le début de la chaîne, ce qui garantit que seuls les noms commençant par "C" sont pris en compte.
2. Correspondance entre plusieurs motifs
SELECT email
FROM users
WHERE email REGEXP 'gmail|yahoo';
Ici, la requête extrait du tableau users
les courriers électroniques contenant "gmail" ou "yahoo".
3. Correspondance de motifs complexes
SELECT phone_number
FROM contacts
WHERE phone_number REGEXP '^[0-9]{3}-[0-9]{3}-[0-9]{4}$';
Cet exemple sélectionne les numéros de téléphone de contacts
qui correspondent au modèle des numéros de téléphone nord-américains au format XXX-XXX-XXXX
.
Conseils et bonnes pratiques
- Optimiser les performances. Les expressions régulières peuvent être gourmandes en ressources ; utilisez-les judicieusement et envisagez d'indexer les colonnes lorsque c'est possible. Utilisez
EXPLAIN
pour analyser les performances des requêtes lors de l'utilisation d'expressions régulières. - Testez les modèles séparément. Testez vos expressions régulières dans un environnement distinct pour vous assurer qu'elles fonctionnent comme prévu avant de les appliquer à vos requêtes.
- Utilisez les ancres à bon escient. Utilisez
^
et$
pour indiquer respectivement le début et la fin d'une chaîne de caractères, afin d'obtenir une correspondance plus précise. - Échapper aux caractères spéciaux. Si votre motif comprend des caractères spéciaux, veillez à ce qu'ils soient correctement échappés afin d'éviter les correspondances inattendues. Par exemple, pour faire correspondre un point littéral, utilisez
\.
:
WHERE column_name REGEXP '\\.'
REGEXP
, qui prend en charge des motifs complexes, LIKE
est utilisé pour des motifs plus simples avec les caractères génériques %
et _
. Utilisez LIKE
pour les modèles simples et REGEXP
pour les exigences plus complexes.