Conversion varchar en int [Résolu]

cs_Boulet1 7 Messages postés mardi 10 janvier 2006Date d'inscription 11 août 2006 Dernière intervention - 9 août 2006 à 16:57 - Dernière réponse : cudenetf 449 Messages postés mardi 20 septembre 2005Date d'inscription 26 juillet 2012 Dernière intervention
- 8 févr. 2010 à 15:07
Bonjour je travaille sur SQL server et je cherche a transformer des champs varchar en int mais je ne trouve pas la solution.

Quand je procède comme cela :
convert(int, Challenge_Client.Nb_Points) as NbPoint
ou
cast(Challenge_Client.Nb_Points as int) as NbPoint

ça me retourne :
Erreur de syntaxe lors de la conversion de la valeur varchar '527.00' vers une colonne de type de données int

et quand je procède comme cela :
convert(int(10), Challenge_Client.Nb_Points) as NbPoint
ou
cast(Challenge_Client.Nb_Points as int(10)) as NbPoint

 ça me retourne :
CAST or CONVERT : attributs non valides spécifiés pour le type 'int'

j'ai vu des solutions ou ils proposaient d'utiliser une fonction mais je veux éviter d'en utiliser.
Si vous pouviez me donne une solution simple et assez rapidement je vous en serait reconnaissant.

Merci d'avance                                                                                                            Boulet1
Afficher la suite 

6 réponses

Répondre au sujet
cs_skweeky 261 Messages postés mercredi 3 mai 2006Date d'inscription 11 janvier 2010 Dernière intervention - 9 août 2006 à 21:38
0
Utile
C'est la chaîne de caractères qui est incorrecte '527.00' ou même '527,00' quel que soit l'opérateur de converstion CAST ou CONVERT ne peut pas fonctionner.... La chaîne '527' elle, fonctionne... Il ne faut pas oublié qu'il s'agit dans entier, dans l'idée de SQL çà n'a pas de sens s'il y a un séparateur de décimal.


Exemple :
cast('527.00'
as
float)


Est correct, on pourrait même aller plus loin :
cast(cast('527.00'
as
decimal)
as
int)


Quant à la variante avec int(10) effectivement c'est une erreur de syntaxe le (10) ne servant à rien sur SQL Server.

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
Commenter la réponse de cs_skweeky
cs_skweeky 261 Messages postés mercredi 3 mai 2006Date d'inscription 11 janvier 2010 Dernière intervention - 9 août 2006 à 21:40
0
Utile
Euh, il y avait des espaces dans mes exemples qui visiblement ont disparus


c'est 'as float', 'as decimal' et 'as int'

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
Commenter la réponse de cs_skweeky
cs_Boulet1 7 Messages postés mardi 10 janvier 2006Date d'inscription 11 août 2006 Dernière intervention - 10 août 2006 à 08:53
0
Utile
ok merci, cela résout un de mes problèmes mais je peu pas transformer toutes mes lignes en float une par une la base est trop énorme. et quand je veux transformer mon champs en float sa me donne des erreurs.


ex quand je fais cast(Challenge_Client.Nb_Points as float) j'obtient :

Erreur de conversion du type de données varchar en float.

donc jaimerai savoir si il est possible de modifier toute ma colonne pour aprè pouvoir la modifier en int.

Merci d'avance
Commenter la réponse de cs_Boulet1
cs_skweeky 261 Messages postés mercredi 3 mai 2006Date d'inscription 11 janvier 2010 Dernière intervention - 10 août 2006 à 18:25
0
Utile
Le 2ème code que j'ai mis en fait 2 CAST :





cast
(
cast
(
'527.00'
as
decimal
)
as
int
)





Sinon il faudrait modifier la chaîne avant...

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
Commenter la réponse de cs_skweeky
cudenetf 449 Messages postés mardi 20 septembre 2005Date d'inscription 26 juillet 2012 Dernière intervention - 8 févr. 2010 à 15:07
0
Utile
Bonjour, j'ai un probleme de cast aussi et je n'arrive pas a trouver la solution.
j'ai un champ de type varchar ds une table sql
des fois ces données sont de type int
j'ai essayé plusieurs choses :

select convert(decimal,ec_ref)+900 as tri
from matable
where ec_journal='FG' and isnumeric(ec_ref)=1

la ca me renvoie bien ttes les données ( qui ont bien l'air d'etre des entiers)
mais si je fais

select tri from
(select convert(decimal,ec_ref)+900 as tri
from matable
where ec_journal='FG' and isnumeric(ec_ref)=1 ) as q1
where q1.tri=2

j'obtiens le message :Erreur de conversion du type de données varchar en numeric. (ligne 1)

je n'arrive aboslument pas a comprendre

si je lance
select * from matable where ec_journal='FG' and is numeric(ec_ref)<>1

j'ai 0 lignes retournées...
Commenter la réponse de cudenetf
cs_Boulet1 7 Messages postés mardi 10 janvier 2006Date d'inscription 11 août 2006 Dernière intervention - 11 août 2006 à 10:52
-1
Utile
c'est bon jai pu modifier mon champ en décimal ça fonctionne bien merci de ton aide
Commenter la réponse de cs_Boulet1

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.