Oracle : remplacement multiple dans une chaine (et séquence d’échappement dans l’ETL DataStudio)

replace multiple Oracle dans une chaineRemplacement multiple dans une chaine et séquence d’échappement dans DataStudio

 

Problèmatique : Je souhaite lire avec une requête SQL Oracle une chaine de caractère (en l’occurence un JSON) en enlevant tous les caractères suivants : { } et « , puis l’intégrer dans un traitement DataStudio.

Solution :
Sur Oracle, je vais utiliser la fonction de regexp_replace qui est équivalent à la fonction replace et qui permet en plus d’utiliser des expressions régulières.

I – remplacement multiple dans une chaine Oracle

select regexp_replace('{"client":"0","caracteristiques":{"particulier":"1","entreprise":"0","multiple":"0","nouveau":"0","reprise"}}',
'{|}|"',
'')  
chaine from dual;

3 paramètres :
param1 : la chaine à traiter
‘{|}| »‘ : les caractères à remplacer entre  » et séparés par des |
 » : le caractère de remplacement, ici on ne remplace par rien pour supprimer

II – séquence d’échappement dans l’ETL DataStudio

En intégrant cette fonction dans un job de l’ETL DataStudio, je me rends compte que ça bloque sur le  » dans le 2ème partie du  regexp_replace.

En effet le  » est interprété par l’éditeur de DataStudio avant l’interprétation dans une chaine de caractère Oracle. Pour pouvoir inclure le  » dans la chaine qu’on recherche, il faut :

  1. Activer l’interprétation des séquences d’échappement dans les chaînes de caractères.
  2. Utiliser le caractère d’échappement qui est le ‘\’.

Ce qui nous donne le code suivant pour les traitements dans l’ETL Datastudio :

 

// option (désactivée par défaut) pour activer l'interprétation des séquences d'échappement dans les chaînes de caractères.
Option("ESCAPE","True");

select regexp_replace('{"client":"0","caracteristiques":{"particulier":"1","entreprise":"0","multiple":"0","nouveau":"0","reprise"}}',
'{|}|\"',
'')  
chaine from dual;

Message(%chaine%);

Option("ESCAPE","False");

voir aussi :

Oracle – un like multiple

Oracle – insérer des chaines contenant des apostrophes

ETL : 10 raisons de choisir DataStudio

[wysija_form id= »2″]

 

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *