Dans MariaDB, le REGEXP_SUBSTR()
renvoie la sous-chaîne qui correspond au modèle d'expression régulière donné.
S'il n'y a pas de correspondance (c'est-à-dire que la chaîne d'entrée ne contient pas la sous-chaîne), le résultat est une chaîne vide.
Syntaxe
La syntaxe ressemble à ceci :
REGEXP_SUBSTR(subject,pattern)
Où subject
est la chaîne d'entrée et le pattern
est le modèle d'expression régulière pour la sous-chaîne.
Notez qu'au moment de la rédaction, la version de MariaDB de REGEXP_SUBSTR()
accepte moins d'arguments que REGEXP_SUBSTR()
de MySQL . La version de MySQL vous permet de fournir des arguments pour la position de départ de la recherche, l'occurrence à rechercher, ainsi qu'un moyen d'affiner l'expression régulière.
Exemple
Voici un exemple de base :
SELECT REGEXP_SUBSTR('Thailand and Laos', 'l.nd');
Résultat :
+-------------------------------------------------+| REGEXP_SUBSTR('Thaïlande et Laos', 'l.nd') |+----------------------------------------------- ----------+| terrain |+----------------------------------------------------------+Dans ce cas, il y a correspondance et la sous-chaîne est renvoyée.
Plusieurs correspondances
Par défaut, s'il existe plusieurs correspondances dans la chaîne, la première est renvoyée :
SELECT REGEXP_SUBSTR('Lend for land', 'l.nd');
Résultat :
+---------------------------------------------+| REGEXP_SUBSTR('Prêt pour un terrain', 'l.nd') |+------------------------------------------------ ------+| Prêter |+---------------------------------------------+Aucune correspondance
Voici un exemple où il n'y a pas de correspondance :
SELECT REGEXP_SUBSTR('Lend for land', '^C');
Résultat :
+--------------------------------------------------+| REGEXP_SUBSTR('Prêt pour un terrain', '^C') |+----------------------------------- ---+| |+---------------------------------------------------+Il n'y a pas de correspondance, donc le résultat est une chaîne vide.
Sensibilité à la casse
Le
REGEXP_SUBSTR()
suit les règles de sensibilité à la casse du classement effectif. La correspondance est effectuée de manière insensible à la casse pour les classements insensibles à la casse, et sensible à la casse pour les classements sensibles à la casse et pour les données binaires.Voici un exemple :
SELECT REGEXP_SUBSTR('My Cats', 'c.t') AS "My Default", REGEXP_SUBSTR(_latin7'My Cats' COLLATE latin7_general_ci, 'c.t') AS "Case Insensitive", REGEXP_SUBSTR(_latin7'My Cats' COLLATE latin7_general_cs, 'c.t') AS "Case Sensitive";
Résultat :
+------------+-------------+---------------------- --+| Ma valeur par défaut | Insensible à la casse | Sensible à la casse |+------------+-------------+---------------------- --+| Chat | Chat | |+------------+------------------+---------------- +Mon classement par défaut est insensible à la casse. Les deux autres chaînes ont été forcées respectivement à un classement insensible à la casse et à un classement sensible à la casse.
Fournir un
BINARY
la chaîne est également sensible à la casse (voir ci-dessous).Chaînes binaires
Passer un
BINARY
chaîne affecte également la sensibilité à la casse. AvecBINARY
chaînes, un caractère majuscule est différent de son homologue minuscule :Exemple :
SELECT REGEXP_SUBSTR('My Cats', 'c.t') AS "Character", REGEXP_SUBSTR(BINARY 'My Cats', 'c.t') AS "Binary";
Résultat :
+-----------+--------+| Caractère | Binaire |+-----------+--------+| Chat | |+-----------+--------+Voici ce qui se passe si nous changeons la casse :
SELECT REGEXP_SUBSTR('My Cats', 'C.t') AS "Character", REGEXP_SUBSTR(BINARY 'My Cats', 'C.t') AS "Binary";
Résultat :
+-----------+--------+| Caractère | Binaire |+-----------+--------+| Chat | Chat |+-----------+--------+Arguments nuls
Passer
null
car tout argument donnenull
:SELECT REGEXP_SUBSTR(null, 'c.t') AS "1", REGEXP_SUBSTR('Cat', null) AS "2", REGEXP_SUBSTR(null, null) AS "3";
Résultat :
+------+------+------+| 1 | 2 | 3 |+------+------+------+| NUL | NUL | NULL |+------+------+------+Mauvais nombre d'arguments
Passer le mauvais nombre d'arguments ou aucun argument, entraîne une erreur :
SELECT REGEXP_SUBSTR('Cat');
Résultat :
ERREUR 1582 (42000) :Nombre de paramètres incorrect dans l'appel à la fonction native 'REGEXP_SUBSTR'