andyajram
Messages postés155Date d'inscriptionvendredi 24 mai 2013StatutMembreDernière intervention 8 avril 2020
-
26 févr. 2019 à 16:06
andyajram
Messages postés155Date d'inscriptionvendredi 24 mai 2013StatutMembreDernière intervention 8 avril 2020
-
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 ???
jordane45
Messages postés37725Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention26 septembre 2023342 26 févr. 2019 à 19:30
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és155Date d'inscriptionvendredi 24 mai 2013StatutMembreDernière intervention 8 avril 20201 27 févr. 2019 à 08:46
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és155Date d'inscriptionvendredi 24 mai 2013StatutMembreDernière intervention 8 avril 20201 27 févr. 2019 à 10:14
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és37725Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention26 septembre 2023342
>
andyajram
Messages postés155Date d'inscriptionvendredi 24 mai 2013StatutMembreDernière intervention 8 avril 2020 27 févr. 2019 à 19:58
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és155Date d'inscriptionvendredi 24 mai 2013StatutMembreDernière intervention 8 avril 20201 28 févr. 2019 à 08:59
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
27 févr. 2019 à 08:46
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.
27 févr. 2019 à 10:14
27 févr. 2019 à 19:58
Il faut trouver celle qui correspond à tes besoins...
Un truc du genre :
Mais bon.. si toutes les cellules qui te posent problème commencent par la lettre C ...
ceci suffirait :
Ainsi tu ne prends que les cellules pour lesquelles tu peux faire la transformation...(vu que tu veux éliminer la ligne.... )
28 févr. 2019 à 08:59