Conversion implicite de données VARCHAR > INT

Résolu
o06 Messages postés 10 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 21 mai 2010 - 3 mars 2010 à 12:10
o06 Messages postés 10 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 21 mai 2010 - 3 mars 2010 à 15:09
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.
A voir également:

1 réponse

o06 Messages postés 10 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 21 mai 2010
3 mars 2010 à 15:09
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+
3
Rejoignez-nous