Catégories :

Fonctions de chaîne (expressions régulières)

RLIKE

Renvoie « true » si le sujet correspond au modèle spécifié. Les deux entrées doivent être des expressions textuelles.

RLIKE est similaire à la fonction LIKE, mais avec des expressions régulières étendues POSIX au lieu de la syntaxe de modèle SQL LIKE. Il prend en charge des conditions de correspondance plus complexes que LIKE.

Alias

REGEXP (2e syntaxe) , REGEXP_LIKE (1ère syntaxe)

Voir aussi

ILIKE , LIKE

REGEXP_COUNT , REGEXP_INSTR , REGEXP_REPLACE , REGEXP_SUBSTR

Syntaxe

-- 1st syntax
RLIKE( <subject> , <pattern> [ , <parameters> ] )

-- 2nd syntax
<subject> RLIKE <pattern>

Arguments

Obligatoire :

sujet

Sujet devant correspondre.

motif

Modèle devant correspondre.

Facultatif :

paramètres

Chaîne d’un ou plusieurs caractères spécifiant les paramètres utilisés pour la recherche de correspondances. Valeurs prises en charge :

c , i , m , e , s

Pour plus de détails, voir Paramètres.

Par défaut : c

Notes sur l’utilisation

  • La fonction ancre implicitement un motif aux deux extrémités (c.-à-d. que '' devient automatiquement '^$' et 'ABC' devient automatiquement '^ABC$'). Pour faire correspondre n’importe quelle chaîne commençant par ABC, le motif serait 'ABC.*'.

  • Pour des notes supplémentaires sur l’utilisation, voir Notes générales sur l’utilisation.

  • Il n’y a pas de caractère d’échappement par défaut.

  • Si vous utilisez la barre oblique inversée en tant que caractère d’échappement, vous devez alors spécifier l’échappement de la barre oblique inversée dans la clause ESCAPE. Par exemple, la commande suivante spécifie que le caractère d’échappement est la barre oblique inversée, puis utilise ce caractère d’échappement pour rechercher « % » comme un littéral (sans le caractère d’échappement, le « % » serait traité comme un caractère générique) :

    'SOMETHING%' LIKE '%\\%%' ESCAPE '\\';
    

    Pour obtenir des exemples d’utilisation des caractères d’échappement, et en particulier de la barre oblique inversée en tant que caractère d’échappement, voir les exemples de la fonction LIKE.

Détails du classement

Arguments with collation specifications are currently not supported.

Exemples

Préparer des exemples :

CREATE OR REPLACE TABLE rlike_ex(city varchar(20));
INSERT INTO rlike_ex VALUES ('Sacramento'), ('San Francisco'), ('San Jose'), (null);

Première syntaxe

Correspondance de modèle insensible à la casse avec les caractères génériques :

SELECT * FROM rlike_ex WHERE RLIKE(city, 'san.*', 'i');

+---------------+
| CITY          |
|---------------|
| San Francisco |
| San Jose      |
+---------------+

Renvoie une valeur true / false lors du test du format des numéros de téléphone et des adresses électroniques :

-- Escape the backslash character (\) in \w and \d

SELECT rlike('800-456-7891','[2-9]\\d{2}-\\d{3}-\\d{4}') FROM dual;

+---------------------------------------------------+
| RLIKE('800-456-7891','[2-9]\\D{2}-\\D{3}-\\D{4}') |
|---------------------------------------------------|
| True                                              |
+---------------------------------------------------+

SELECT rlike('jsmith@email.com','\\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}') FROM dual;

+-------------------------------------------------------------+
| RLIKE('JSMITH@EMAIL.COM','\\W+@[A-ZA-Z_]+?\.[A-ZA-Z]{2,3}') |
|-------------------------------------------------------------|
| True                                                        |
+-------------------------------------------------------------+

-- Alternatively, rewrite the statements and avoid sequences that rely on the backslash character

SELECT rlike('800-456-7891','[2-9][0-9]{2}-[0-9]{3}-[0-9]{4}') FROM dual;

+---------------------------------------------------------+
| RLIKE('800-456-7891','[2-9][0-9]{2}-[0-9]{3}-[0-9]{4}') |
|---------------------------------------------------------|
| True                                                    |
+---------------------------------------------------------+

SELECT rlike('jsmith@email.com','[a-zA-Z_]+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}') FROM dual;

+-------------------------------------------------------------------+
| RLIKE('JSMITH@EMAIL.COM','[A-ZA-Z_]+@[A-ZA-Z_]+?\.[A-ZA-Z]{2,3}') |
|-------------------------------------------------------------------|
| True                                                              |
+-------------------------------------------------------------------+

Deuxième syntaxe

Correspondance de modèle sensible à la casse :

SELECT * FROM rlike_ex WHERE city RLIKE 'San.* [fF].*';

+---------------+
| CITY          |
|---------------|
| San Francisco |
+---------------+