Teste chaine de caractere [Oracle] - SQL/NoSQL - Programmation
Marsh Posté le 05-12-2005 à 16:34:49
le plus simple est de faire une fonction prenant en paramètre un VARCHAR(4000)
Implémentant une gestion d'erreur, et tentant un CAST en NUMBER(18)
val = to_number(val)
on error
val = 0
et zou ! t'appelles cette fonction sur ton champs, avec un decode sur le test to_char(fct(val)) != val pour détecter s'il y a eu une erreur
Marsh Posté le 05-12-2005 à 16:41:38
Ok j achete c est bien dans l esprit ca. Par contre niveau realisation, aurais tu un exemple de gestion d'erreur ?
Marsh Posté le 05-12-2005 à 16:49:30
aucun exemple.
mais je me souviens m'être posé le problème un coup, et j'étais tombé sur cette solution dans google et y'avais un exemple de cette fonction, donc à priori, suffit de chercher "isnumeric oracle" dans google ou un truc du genre et ça doit aller
Marsh Posté le 05-12-2005 à 16:50:45
encore mieu !
http://www.techonthenet.com/oracle [...] umeric.php
là, c'est bien pourri comme solution (parcequ'on ne comprends pas ce qu'on fait) mais ça à l'air pas mal du tout !
Marsh Posté le 05-12-2005 à 16:52:04
ceci dit, ce n'est pas parfait comme solution :
192.168.0.1 sera détecté comme un nombre, tout comme l'expression "1+1"...
Marsh Posté le 05-12-2005 à 17:02:57
Oui mais mais si j enleve +-. de la fonction ca marche car si il tombe sur un . un + ou - il retourne une valeur.
Merci bcp pour votre aide.
Marsh Posté le 05-12-2005 à 17:04:57
si t'as ni nombre négatifs ni décimaux, en effet c'est parfait !
Marsh Posté le 05-12-2005 à 16:09:02
Bonjour,
Je suis sous oracle 9i. J ai une requete de mise a jour d'un champ qui recupere le contenu d'un champ, le converti en nombre et fait une opération desssu pour renseigner une nouvelle colonne.
Il arrive de temps en temps que des valeurs avec des caractere non numerique se glissent dans la colonne. Et ca plante le traitement.
Je ne sais pas comment m'y prendre pour tester que je n ai que des caractere numerique dans ma colonne ( les expression reguliere arrivent avec la version 10)
Merci