Mysql
 sql >> Base de données >  >> RDS >> Mysql

Fonctionnement de la fonction REGEXP_LIKE() dans MySQL

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])

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.