Conversion implicite de données VARCHAR > INT [Résolu]

Signaler
Messages postés
10
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
21 mai 2010
-
Messages postés
10
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
21 mai 2010
-
Bonjour le forum,

j'ai un souci avec les types de données.
D'après la doc SQL la conversion du type VARCHAR vers INT se fait de manière implicite. Si j'ai bien compris sans avoir besoin d'utiliser les fonction CAST ou bien CONVERT.
Malgré tout j'ai un msg d'erreur de conversion dans une de mes requêtes.

J'ai des valeurs de type nombre comme 38/40/42 etc. et des valeurs de type chaine S/L/M (des tailles en fait)

SUM(CASE WHEN dbo.F_ARTGAMME.EG_Enumere = 38 THEN dbo.F_GAMSTOCK.GS_QteSto ELSE 0 END) AS [38],


Je n'arrive pas à décliner la syntaxe ci dessus pour une valeur chaine (texte, string, ....)pour dbo.F_ARTGAMME.EG_Enumere avec S par ex. J'ai essayé à peu prés toutes les options de syntaxe à mon niveau, écumer forums et blogs, rien à faire j'ai le msg d'erreur récurrent :
[b]Serveur : Msg 245, Niveau 16, État 1, Ligne 1
Erreur de syntaxe lors de la conversion de la valeur varchar 'S' vers une colonne de type de données int./b

Une piste pour m'aider ?
Un grand merci d'avance.

1 réponse

Messages postés
10
Date d'inscription
lundi 4 août 2008
Statut
Membre
Dernière intervention
21 mai 2010

Re,

Finalement trouvé la bonne syntaxe.
Je le mets ça pourra peut être servir à d'autres jeunes "Padawan".

.../...
SUM(CASE WHEN dbo.F_ARTGAMME.EG_Enumere IN ('s') THEN dbo.F_GAMSTOCK.GS_QteSto ELSE 0 END) AS ['s'], 
SUM(CASE WHEN dbo.F_ARTGAMME.EG_Enumere IN('38') THEN dbo.F_GAMSTOCK.GS_QteSto ELSE 0 END) AS ['38'],
.../...


Comme cela plus besoin de se soucier du type de donnée.

A+