Bonjour, Tout le monde
J'ai une petite souci. en effet, il y a un champ dans un table, son format est varchar2(). et je voudrais récupérer des lignes dont le contenue de champ est reiseigné en numérique.
est-ce que vous avez une idée?:cry:
Version imprimable
Bonjour, Tout le monde
J'ai une petite souci. en effet, il y a un champ dans un table, son format est varchar2(). et je voudrais récupérer des lignes dont le contenue de champ est reiseigné en numérique.
est-ce que vous avez une idée?:cry:
Bonjour,
si tu fais recheche isnumeric ici ou sur GOOGLE tu devrais tomber sur des posts intéressants
par exemple en te basant des posts
http://www.developpez.net/forums/d19...ver-isnumeric/
La prochaine fois envoie ta version Oracle ...
Ca dépend si ça contient des virgules ou pas.
Si ce sont juste des chiffres :
Code:LTRIM(champ, '0123456789') IS NULL
ou un peu plus joli
Code:where xmlexists('/[X castable as xs:decimal]' passing xmlelement(x,x))
PS: mais les goûts et les couleurs...
on peut pas avoir le beurre, l'argent du beurre et la fille de la crémière, non?
un peu plus propre serait sans doute X/text() au lieu de X
Oui bon, d'accord....
J'aime bien aussi la version courte :
PS: marche pas avec les caracteres speciaux...Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SQL> select x 2 from (select 'laurent2009' x from dual 3 union all 4 select '1.0' from dual 5 union all 6 select '2009' from dual) 7 where soundex(x) is null; X ----------- 1.0 2009 SQL>
Nicolas.
un usage interessant de SOUNDEX c'est sûr, mais pas vraiment précis ...Code:
1
2
3
4 SELECT x FROM (SELECT '1e32' x FROM dual union all select '1.1.1' from dual) WHERE soundex(x) IS NULL; 1.1.1
Ouais, c'est vrai, bon aller. Un petit REGEXP_LIKE ou TRANSLATE fera bien mieux l'affaire...
Apres tout, on ne sait pas ce que veut vraiment kinkichin
Et puis finalement, pour '1e32', la c'est vrai, ca se complique !
Ca me fais penser a ton dernier article sur ton blog :
http://laurentschneider.com/wordpres...rto_charn.html
Nicolas.
Ha ha ha!!!
l'infini n'est apparemment pas accepté par xs:decimal. Par contre xs:float comprend INF.
par contre pour mon post, ça détruit mon xmlexists :aie:Code:
1
2
3
4 select * from (select 'INF' x from dual) where xmlexists('/[X/text() castable as xs:float]' passing xmlelement(x,x))
Pourquoi?Code:
1
2
3
4
5
6
7
8
9
10
11 select to_number(x) from (select '9.999999999999999999999999999999999999999e125' x from dual) where xmlexists('/[X/text() castable as xs:float]' passing xmlelement(x,x)) TO_ --- ~ select to_number(x) from (select '9.9999999999999999999999999999999999999999e125' x from dual) -- un neuf de plus where xmlexists('/[X/text() castable as xs:float]' passing xmlelement(x,x)) ORA-01426: numeric overflow
Ben à cause de la précision de xs:décimal...
Code:
1
2
3
4
5
6 select xmlquery('xs:decimal(9.9999999999999999999999999999999999999999e125)' returning content).getstringval() from dual XMLQUERY ---------------------------------------------- 9.999999999999999200000000000000000E+125
Y'a quand même des barjots sur ce forum ! :mouarf:
kinkichin, on est pas près de le revoir, vous l'avez effrayé je pense ;)