Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1363 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Conversion caractère -> nombre, erreur

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Conversion caractère -> nombre, erreur

n°1953851
MaRTy59
Posté le 30-12-2009 à 09:32:03  profilanswer
 

Bonjour à tous, je dois comparer des personnes selon leurs matricules sur deux bases différentes.
Le champ CODE est de type NUMBER, le champ NUM est de type VARCHAR2(17).
Pour pouvoir faire la comparaison il faut que les deux soient du même type donc j'utilise la fonction to_number mais ça ne fonctionne pas :(

Code :
  1. SELECT  b1.NOM, b1.PRENOM, b1.CODE, b2.NAME, b2.FSTNAME, To_Number(b2.NUM)
  2. FROM    base1 civi, base2@linkbase2 b2
  3. WHERE   b1.CODE = To_Number(b2.NUM)


Code :
  1. ORA-01722: Nombre non valide
  2. ORA-02063: précédant line de linkbase2
  3. Total execution time 0.015 sec.


Base trop vieille ? Je suis en Oracle v8 je crois.
Merci de votre aide.

mood
Publicité
Posté le 30-12-2009 à 09:32:03  profilanswer
 

n°1953852
casimimir
Posté le 30-12-2009 à 09:40:40  profilanswer
 

soit tu as des matricules qui ne sont pas des nombres, soit tu dois lui préciser le format, to_number peut prendre un 2ème paramètre qui est un masque.
 
et si tu ne veux pas te casser la nenette tu fais plutot un to_char de ton b1.CODE

n°1953853
MaRTy59
Posté le 30-12-2009 à 09:42:22  profilanswer
 

C'est ce que j'ai fait merci :)

n°1966417
aldo_nitro
Posté le 16-02-2010 à 10:46:12  profilanswer
 

Salut,
 
J'ai un problème assez similaire à celui de marty59. J'ai un champs VALUE qui est un varchar2 qui contient des nombres du genre (-1, 0 , 3.5...).
J'ai besoin de vérifier que ces nombres sont supètieur a 0.
 
Ce que j'ai fais c'est :

Code :
  1. AND TO_NUMBER(VALUE, '9999D99') > TO_NUMBER('0', '9999D99')


mais sa ne marche pas ("Nombre Invalide" ).
 
Voilà j'espère que qq pourra m'aider.

n°1968120
E-Nyar
I ain't no nice guy after all
Posté le 22-02-2010 à 12:04:17  profilanswer
 

En fait pour être parfaitement précis, TO_NUMBER comporte non pas 2, mais 3 paramètre, le dernier (NLS_NUMERIRC_CHARACTERS) étant la variable locale pour les décimales de plus tu indiques des valeurs pouvant être négatives, il faut donc lui préciser qu'il est possible de trouver ce signe (S), le problème c'est que lorsque l'on précise le signe (S) il faut qu'il soit TOUJOURS présent (y compris pour les nombre positif).

 

Donc en gros pour ton cas ça donnerait :
TO_NUMBER(DECODE(SUBSTR(VALUE, 0, 1), '-', VALUE,  '+', VALUE, '+'||VALUE), 'S99999D99','NLS_NUMERIC_CHARACTERS = '',.''') >  0


Message édité par E-Nyar le 22-02-2010 à 12:05:46

---------------
Don't fuck me, I'm anonymous.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Conversion caractère -> nombre, erreur

 

Sujets relatifs
Erreur Requête basique[VBS] Quel est le caractère qui annule l'interprétation...
Erreur d'une requéte trés trés simpleerreur sur stringstream surrement simple mais pas trouvée encore
Supprimer le dernier caractère si c'est un "/"Reconnexion d'un MDB, spécifier le nombre d'essais
stringstream conversion en int 5e+006 => 5Message d'erreur NetBeans
Démineur erreur de segmentation[PHP/Access] Erreur ODBC
Plus de sujets relatifs à : Conversion caractère -> nombre, erreur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR