Remplace toutes les sous-chaînes d'une chaîne qui correspondent à une expression régulière et renvoie le résultat sous forme de nouvelle chaîne.
REGEXP_REPLACE(str, pattern, replacement) renvoie un nouveau VARCHAR à partir de str, où chaque sous-chaîne correspondant à l'expression régulière définie dans pattern est remplacée par replacement.
Limites
Cette fonction est prise en charge uniquement dans Realtime Compute for Apache Flink utilisant Ververica Runtime (VVR) 3.0.0 ou version ultérieure.
Syntaxe
VARCHAR REGEXP_REPLACE(VARCHAR str, VARCHAR pattern, VARCHAR replacement)
Paramètres d'entrée
| Paramètre | Type de données | Description |
|---|---|---|
str |
VARCHAR | Chaîne source à rechercher. |
pattern |
VARCHAR | Motif d'expression régulière à faire correspondre. |
replacement |
VARCHAR | Chaîne de remplacement pour chaque occurrence trouvée. |
Renvoie NULL si l'un des paramètres d'entrée est NULL ou si l'expression régulière n'est pas valide.
Notes d'utilisation
Les paramètres pattern et replacement suivent la syntaxe Java Pattern.
Lorsque vous écrivez des motifs en SQL, vous devez doubler l'échappement des caractères spéciaux. L'analyseur SQL consomme une barre oblique inverse, de sorte que le moteur d'expressions régulières reçoit le motif attendu. Par exemple, pour faire correspondre un groupe de chiffres, utilisez '(\\d+)' au lieu de '(\d+)'.
Exemples
Les exemples suivants utilisent la table T1 comme source de données :
T1
| str1 (VARCHAR) | pattern1 (VARCHAR) | replace1 (VARCHAR) |
|---|---|---|
2014-03-13 |
- |
(chaîne vide) |
| (chaîne vide) | - |
(chaîne vide) |
2014-03-13 |
(chaîne vide) | s |
2014-03-13 |
( |
s |
100-200 |
(\\d+) |
num |
Requête
SELECT REGEXP_REPLACE(str1, pattern1, replace1) AS `result`
FROM T1;
Résultats
| result (VARCHAR) | Explication |
|---|---|
20140313 |
Remplace tous les traits d'union par une chaîne vide. |
| (chaîne vide) | La chaîne d'entrée est vide ; il n'y a rien à remplacer. |
s2s0s1s4s-s0s3s-s1s3s |
Un motif vide correspond à chaque position entre les caractères, insérant s à chaque emplacement. |
| NULL | ( constitue une expression régulière non valide ; la fonction renvoie NULL. |
num-num |
(\\d+) correspond à chaque groupe de chiffres ; 100 et 200 sont tous deux remplacés par num. |