Transformation d'une donnée sélectionnée PLSQL

Nouvelle_Informaticienne Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   -  
Nouvelle_Informaticienne Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour la communauté :) ,

j'ai le code pl/sql suivant :

---- Type number
          if (v_type= 'number')
              then
              SQL_VIEW := SQL_VIEW || ', (SELECT to_number(CHA_VALUE)
             FROM TA_CHAMP CHA
             INNER JOIN TA_TYPE_CHAMP TCH ON TCH.ID_TYPECHAMP = CHA.ID_TYPECHAMP
             WHERE TCH_ORDRE = ' || i_ordre || ' AND ID_DOSSIER = DOS.ID_DOSSIER) AS ' || v_nom;


qui fait la sélection des champs et si c'est un type number je le cast en number et je le réenregistre dans une vue, tous marche bien jusqu'au la

sauf que je veux rajouter la condition que ma valeur CHA_VALUE doit être dans le domaine [0-9.] avant de la transformer en number et si je croise un nombre avec une virgule , je dois transformer la , en . avant de l'enregistrer ! par exemple la donnée est : 12,45 je dois la transformer en 12.45 et en number apres !

mon essai est le suivant je rajoute a la fin du 'WHER'E un 'AND' :
AND REGEXP_LIKE (CHA_VALUE, '[0-9.]*$') 
=> ça c'est pour la condition qu'il soit un nombre avec ou pas le point ( qui désigne virgule)

pour le changement de ',' en '.' je cherche encore.

le bout de code que j'ai fait est juste ou pas ? est ce que je dois le rajouter à la fin du WHERE ? des idées pour le transferts de ',' => '.' s'il vous plait .

je vous remercie :)

1 réponse

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Pour remplacer un caractère dans une chaîne, il faut utiliser la fonction REPLACE :
REPLACE(CHA_VALUE, ',', '.')

https://www.techonthenet.com/oracle/functions/replace.php

Xavier
0
Nouvelle_Informaticienne Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   3
 
Bonjour Xavier je te remercie pour ta réponse,

j'ai intégré la fonction REPLACE dans mon code comme suit :
 (SELECT to_number(REPLACE(CHA_VALUE,',','.')) 


mais le soucis c'est qu'il aime pas le '.' le point il le souligne et dis erreur de syntaxe ,

je ne vois pas trop pourquoi !

merci encore
0
Nouvelle_Informaticienne Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   3
 
en fait il faut mettre double ''
0