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

Comment REGEXP_SUBSTR() fonctionne dans MariaDB

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) 

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. Avec BINARY 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 donne null :

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'