- Catégories :
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 : Fonctions de chaîne (expressions régulières)
Syntaxe¶
-- 1st syntax
RLIKE( <subject> , <pattern> [ , <parameters> ] )
-- 2nd syntax
<subject> RLIKE <pattern>
Arguments¶
Obligatoire :
subject
Sujet devant correspondre.
pattern
Modèle devant correspondre.
Facultatif :
parameters
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 Spécification des paramètres de l’expression régulière.
Par défaut :
c
Renvoie¶
Le type de données de la valeur renvoyée est BOOLEAN.
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.*'
.Le caractère barre oblique inverse (
\
) est le caractère d’échappement. Pour plus d’informations, voir Spécification d’expressions régulières dans des constantes de chaîne entre guillemets simples.Pour plus de notes sur l’utilisation, voir Notes générales sur l’utilisation pour les fonctions d’expression régulière.
Détails du classement¶
Arguments with collation specifications are currently not supported.
Exemples¶
Exécutez les commandes suivantes afin de définir les données pour les exemples de cette rubrique :
CREATE OR REPLACE TABLE rlike_ex(city varchar(20)); INSERT INTO rlike_ex VALUES ('Sacramento'), ('San Francisco'), ('San Jose'), (null);
Première syntaxe¶
L’exemple suivant cherche une correspondance de motifs insensible à la casse avec des caractères génériques :
SELECT * FROM rlike_ex WHERE RLIKE(city, 'san.*', 'i'); +---------------+ | CITY | |---------------| | San Francisco | | San Jose | +---------------+
Les exemples suivants déterminent si une chaîne correspond au format d’un numéro de téléphone et d’une adresse e-mail. Dans ces exemples, les expressions régulières sont spécifiées dans des chaînes comprises entre des dollars pour éviter l’échappement des barres obliques inverses dans l’expression régulière.
SELECT RLIKE('800-456-7891', $$[2-9]\d{2}-\d{3}-\d{4}$$) AS matches_phone_number; +----------------------+ | MATCHES_PHONE_NUMBER | |----------------------| | True | +----------------------+ SELECT RLIKE('jsmith@email.com',$$\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$$) AS matches_email_address; +-----------------------+ | MATCHES_EMAIL_ADDRESS | |-----------------------| | True | +-----------------------+
Les exemples suivants cherchent les mêmes correspondances, mais utilisent les constantes de chaîne entre guillemets simples pour spécifier les expressions régulières.
Comme l’exemple utilise des constantes de chaîne entre guillemets simples, chaque barre oblique inverse doit être échappée avec une autre barre oblique inverse.
-- Escape the backslash character (\) in \w and \d SELECT RLIKE('800-456-7891','[2-9]\\d{2}-\\d{3}-\\d{4}') AS matches_phone_number; +----------------------+ | MATCHES_PHONE_NUMBER | |----------------------| | True | +----------------------+ SELECT RLIKE('jsmith@email.com','\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}') AS matches_email_address; +-----------------------+ | MATCHES_EMAIL_ADDRESS | |-----------------------| | 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}') AS matches_phone_number; +----------------------+ | MATCHES_PHONE_NUMBER | |----------------------| | True | +----------------------+ SELECT RLIKE('jsmith@email.com','[a-zA-Z_]+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}') AS matches_email_address; +-----------------------+ | MATCHES_EMAIL_ADDRESS | |-----------------------| | True | +-----------------------+
Deuxième syntaxe¶
Correspondance de modèle sensible à la casse :
SELECT * FROM rlike_ex WHERE city RLIKE 'San.* [fF].*'; +---------------+ | CITY | |---------------| | San Francisco | +---------------+