Convertir quelques données en 0 [Résolu]

Messages postés
132
Date d'inscription
vendredi 24 mai 2013
Dernière intervention
28 février 2019
- - Dernière réponse : andyajram
Messages postés
132
Date d'inscription
vendredi 24 mai 2013
Dernière intervention
28 février 2019
- 28 févr. 2019 à 08:59
Bonjour tout le monde,

je sollicite votre aide pour faire marcher une requête , je veux convertir les données à partir d'un champ de type varchar2 pour les insérer dans un champ numérique qui sont sous forme de :
0.02
0.02
0.03
0.03
0.03
0.03
0.037
normalement j'utilise la fonction to_number(REPLACE(R_TEXT, '.' , ',' ))
mais cette fonction ne marche plus , j'ai le message Nombre non valide parce que quand j'ai vérifié sur la base de données j'ai trouvé qu'il ya des données sous la forme :
Ca ( S O4 )*** ; Ca ( S O4 ) ( H2 O )2*; Si O2*
Ca ( S O4 )*** ; Ca ( S O4 ) ( H2 O )2*; Si O2*
Ca ( S O4 )*** ; Ca ( S O4 ) ( H2 O )2*; Si O2*
Ca ( S O4 )*** ; Ca ( S O4 ) ( H2 O )2*; Si O2*
Ca ( S O4 )*** ; Ca ( S O4 ) ( H2 O )2*; Si O2*
Ca ( S O4 )*** ; Ca ( S O4 ) ( H2 O )2*; Si O2*
Ca ( S O4 )*** ; Ca ( S O4 ) ( H2 O )2*; Si O2*
Ca S O4 !2 H2 O*** ; Si O2*** ; Al2 ( Al2.8 Si1.2 ) O9.6** ; Ca S O4 !0.5 H2 O*; Ca C O3*
Ca S O4 !2 H2 O*** ; Si O2*** ; Al2 ( Al2.8 Si1.2 ) O9.6** ; Ca S O4 !0.5 H2 O*; Ca C O3*
Ca S O4 !2 H2 O*** ; Si O2*** ; Al2 ( Al2.8 Si1.2 ) O9.6** ; Ca S O4 !0.5 H2 O*; Ca C O3*
je voudrai savoir est-ce-qu'il y'a un moyen de ne pas prendre en compte ces données lors du chargement ou bien ils peuvent être transformées en 0 par exemple ???

Merci d'avance
Afficher la suite 

Votre réponse

1 réponse

Messages postés
25029
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 mars 2019
364
0
Merci
Bonjour

tu dois pouvoir utiliser une regex pour extraire les lignes qui ne correspondent pas à des chiffres (avec point ou virgule).
De là, tu pourras faire une requête d'update sur ces lignes pour les mettre à 0
andyajram
Messages postés
132
Date d'inscription
vendredi 24 mai 2013
Dernière intervention
28 février 2019
-
Bonjour, quand je fais ça : select REGEXP_REPLACE(R_TEXT, '[^0-9A-Za-z]', '0') from ma table order by R_TEXT ,
ca me donne : Ca000S0O400000000Ca000S0O400000H20O002000Si0O20
mais ensuite je ne sais pas comment eliminer la ligne vue que je ne peux faire que des selects sur cette table je ne peux pas la modifier avec update parceque je ne fais que lire d'une vue qui est en production.
andyajram
Messages postés
132
Date d'inscription
vendredi 24 mai 2013
Dernière intervention
28 février 2019
-
j'ai fais ça ensuite :
select to_number(REPLACE(R, '.' , ',' )) from (
select REGEXP_REPLACE(R_TEXT, '[^0-9A-Za-z]', '0') as R from ma_table
where R_TEXT not like 'C%' ) order by R
mais ça enlève aussi les chiffres de mes données et ça ne met pas de virgule , comment je peux faire ??
jordane45
Messages postés
25029
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 mars 2019
364 > andyajram
Messages postés
132
Date d'inscription
vendredi 24 mai 2013
Dernière intervention
28 février 2019
-
As tu testé ta regex ??
Il faut trouver celle qui correspond à tes besoins...
Un truc du genre :
^([Ca-zA-Z*\\\*;\W].*)


Mais bon.. si toutes les cellules qui te posent problème commencent par la lettre C ...
ceci suffirait :

SELECT to_number(REPLACE(R_TEXT, '.' , ',' ))
FROM ma_table
WHERE R_TEXT  NOT LIKE 'C%'

Ainsi tu ne prends que les cellules pour lesquelles tu peux faire la transformation...(vu que tu veux éliminer la ligne.... )
andyajram
Messages postés
132
Date d'inscription
vendredi 24 mai 2013
Dernière intervention
28 février 2019
-
et soudainement aujourd'hui j'ai trouvé qu'il y'a plus de caractère spéciaux et que l'ancienne formule marche bien , lol , je pense qu'un chargement a due alimenter la table pendant la nuit
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.