Dans MySQL, le REGEXP_LIKE()
La fonction est utilisée pour déterminer si une chaîne correspond ou non à une expression régulière.
La fonction renvoie 1
si la chaîne correspond à l'expression régulière fournie, et 0
si ce n'est pas le cas.
Syntaxe
La syntaxe ressemble à ceci :
REGEXP_LIKE(expr, pat[, match_type])
Où expr
est la chaîne d'entrée et pat
est l'expression régulière pour laquelle vous testez la chaîne.
Le match_type
facultatif L'argument permet d'affiner l'expression régulière. Par exemple, vous pouvez utiliser match_type
pour spécifier ou non la correspondance sensible à la casse.
Exemple 1 - Utilisation de base
Voici un exemple de base :
SELECT REGEXP_LIKE('Cat', '.*') Result;
Résultat :
+--------+ | Result | +--------+ | 1 | +--------+
Dans ce cas, notre expression régulière spécifie n'importe quel caractère dans n'importe quelle séquence, donc bien sûr nous obtenons une correspondance. La fonction renvoie 1
pour indiquer une correspondance.
Exemple 2 – Aucune correspondance
Voici un exemple où la chaîne d'entrée ne correspond pas à l'expression régulière :
SELECT REGEXP_LIKE('Cat', 'b+') Result;
Résultat :
+--------+ | Result | +--------+ | 0 | +--------+
Dans ce cas, notre expression régulière spécifie qu'il doit y avoir un ou plusieurs b
caractères dans n'importe quelle séquence. Notre chaîne d'entrée ne contient pas ce caractère et donc 0
est renvoyé.
Exemple 3 - Faire correspondre le début d'une chaîne
Voici un exemple où l'expression régulière spécifie que la chaîne doit commencer par certains caractères :
SELECT REGEXP_LIKE('Cat', '^Ca') Result;
Résultat :
+--------+ | Result | +--------+ | 1 | +--------+
Et voici ce qui se passe s'il n'y a pas de correspondance :
SELECT REGEXP_LIKE('Cat', '^Da') Result;
Résultat :
+--------+ | Result | +--------+ | 0 | +--------+
Exemple 4 - Une requête de base de données
Cette fonction peut être utilisée dans le WHERE
clause des requêtes de base de données pour renvoyer uniquement les lignes contenant le modèle :
SELECT AlbumId, AlbumName FROM Albums WHERE REGEXP_LIKE(AlbumName, '^Power');
Résultat :
+---------+------------+ | AlbumId | AlbumName | +---------+------------+ | 1 | Powerslave | | 2 | Powerage | +---------+------------+
Voici le tableau complet :
SELECT AlbumId, AlbumName FROM Albums;
Résultat :
+---------+--------------------------+ | AlbumId | AlbumName | +---------+--------------------------+ | 1 | Powerslave | | 2 | Powerage | | 3 | Singing Down the Lane | | 4 | Ziltoid the Omniscient | | 5 | Casualties of Cool | | 6 | Epicloud | | 7 | Somewhere in Time | | 8 | Piece of Mind | | 9 | Killers | | 10 | No Prayer for the Dying | | 11 | No Sound Without Silence | | 12 | Big Swing Face | | 13 | Blue Night | | 14 | Eternity | | 15 | Scandinavia | | 16 | Long Lost Suitcase | | 17 | Praise and Blame | | 18 | Along Came Jones | | 19 | All Night Wrong | | 20 | The Sixteen Men of Tain | +---------+--------------------------+
Exemple 5 – Le match_type
Argumentation
Vous pouvez fournir un argument supplémentaire pour déterminer le type de correspondance. Cela vous permet de spécifier des choses comme si la correspondance est ou non sensible à la casse, s'il faut ou non inclure des fins de ligne, etc.
Voici un exemple de spécification d'une correspondance sensible à la casse et d'une correspondance insensible à la casse :
SELECT REGEXP_LIKE('Cat', '^ca', 'c') 'Case-Sensitive', REGEXP_LIKE('Cat', '^ca', 'i') 'Case-Insensitive';
Résultat :
+----------------+------------------+ | Case-Sensitive | Case-Insensitive | +----------------+------------------+ | 0 | 1 | +----------------+------------------+
Le match_type
l'argument peut contenir les caractères suivants :
c
- Correspondance sensible à la casse.
i
- Correspondance insensible à la casse.
m
- Mode multiligne. Reconnaître les terminaisons de ligne dans la chaîne. Le comportement par défaut consiste à faire correspondre les fins de ligne uniquement au début et à la fin de l'expression de chaîne.
n
- Le
.
caractère correspond aux fins de ligne. La valeur par défaut est pour.
correspondant à s'arrêter à la fin d'une ligne. u
- Fin de ligne UNIX uniquement. Seul le caractère de nouvelle ligne est reconnu comme une ligne se terminant par le
.
,^
, et$
opérateurs de correspondance.
Plus d'exemples
Vous pouvez voir plus d'exemples d'expressions régulières de base sur Exemples MySQL REGEXP. REGEXP
est un synonyme de REGEXP_LIKE()
, vous pouvez donc utiliser les exemples de manière interchangeable.
Consultez également la syntaxe des expressions régulières dans la documentation MySQL.