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.