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

Fermé
Nouvelle_Informaticienne Messages postés 153 Date d'inscription mercredi 20 avril 2016 Statut Membre Dernière intervention 20 décembre 2021 - 3 oct. 2018 à 17:28
Nouvelle_Informaticienne Messages postés 153 Date d'inscription mercredi 20 avril 2016 Statut Membre Dernière intervention 20 décembre 2021 - 4 oct. 2018 à 11:42
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
4 oct. 2018 à 10:05
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 mercredi 20 avril 2016 Statut Membre Dernière intervention 20 décembre 2021 3
4 oct. 2018 à 11:32
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 mercredi 20 avril 2016 Statut Membre Dernière intervention 20 décembre 2021 3
4 oct. 2018 à 11:42
en fait il faut mettre double ''
0