IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Conversion failed when converting the nvarchar value to data type int.


Sujet :

Développement SQL Server

  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    361
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 361
    Par défaut Conversion failed when converting the nvarchar value to data type int.
    Bonjour,

    Lorsque j'ajoute à ma jointure
    AND t2.Ref_Colori = t1.Ref_Colori
    ça m'affiche l'erreur suivante :
    "Conversion failed when converting the nvarchar value 'CV7891012AFX' to data type int.", sauf que je n'essaye pas de convertir ma colonne "Ref_Colori" en int, elle est bien déclaré en nvarchar(255) car alphanumérique.

    et dès lors que je supprime la ligne
    AND t2.Ref_Colori = t1.Ref_Colori
    , la requête tourne et affiche un résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    WITH cte_commande_famille_groupe (
    	annee,mois,jour,numcol_corrige,ref_colori,ligne	)
    AS (
    	SELECT annee,mois,jour,numcol_corrige,sum(ligne),ref_colori
    	FROM prep_global_backup
    	GROUP BY annee
    		,mois
    		,jour
    		,numcol_corrige
    		,ref_colori
    	HAVING sum(ligne) > 1
    	)
    SELECT t1.annee	,t1.mois,t1.jour,t1.numcol_corrige
    FROM prep_global_backup AS t1
     
    LEFT JOIN cte_commande_famille_groupe AS t2 ON t2.annee = t1.annee
    	AND t2.mois = t1.mois
    	AND t2.jour = t1.jour
    	AND t2.numcol_corrige = t1.numcol_corrige
    	AND t2.Ref_Colori = t1.Ref_Colori
     
    WHERE ppk_unit = 'Unitaire'
     
    GROUP BY t1.annee
    	,t1.mois
    	,t1.jour
    	,t1.numcol_corrige
    merci de votre aide

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    Bonjour,

    C'est typiquement le genre de problème qu'on peut avoir quand on oublie une virgule pour séparer les champs, et alors on crée des alias de colonne involontairement.
    Je ne peux pas tester ce code mais une intuition: relisez bien l'ordre dans lequel vous listez les champs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    WITH cte_commande_famille_groupe (
    	annee,mois,jour,numcol_corrige,ref_colori,ligne	)
    AS (
    	SELECT annee,mois,jour,numcol_corrige,sum(ligne),ref_colori
    J'ai l'impression que ref_colori (au dessus) a en fait pris la valeur de sum(ligne) (en dessous).
    Inverser les deux derniers champs pourrait alors suffire à régler le souci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT annee,mois,jour,numcol_corrige,ref_colori,sum(ligne)

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 992
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par binarygirl Voir le message
    ...

    C'est typiquement le genre de problème qu'on peut avoir quand on oublie une virgule pour séparer les champs
    Au passage, je voit que tu est Belge, mais on ne parle pas de CHAMPS dans une base de données. Les champs c'est pour les patates, les chirurgiens et les formulaires de la sécu... On parle de colonnes, lignes... dans des tables. Bon je te pardonne, car en Belgique, la culture de la patate est un must et se fait dans les champs!!!

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Invité de passage
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2023
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2023
    Messages : 1
    Par défaut
    Les tables, d'une base de donnée, sont composées d'enregistrements (records en anglais) et de champs (fields).
    Le fait d'utiliser les mots lignes et colonnes est un abus qui est issu de l'utilisation des tableurs tels qu'Excel et bien avant Lotus 123.
    La critique est facile, mais encore faut-il être précis...
    Même s'il s'agit de pomme de terre...

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 586
    Billets dans le blog
    10
    Par défaut
    Ben non : la table ne possède pas d'enregistrements, la table n'est qu'une structure, dont les lignes sont stockées dans le tablespace.
    À tel point que l'ordre des colonnes de la table n'est pas celui des colonnes du tablespace, la plupart des SGBD-R repoussent les colonnes de longueur variable en fin de ligne.

    Par ailleurs, les termes de lignes et de colonnes ne sont pas issus des tableurs. Les 12 règles de Codd (qui rappelons-le est l'inventeur du modèle de données relationnel) parlent bien de lignes et de colonnes.

    Enfin, les catalogues relationnels de nos SGBD-R ont bien une table des colonnes, mais pas de table des champs, et pour cause !

    L'usage du terme "champ" vient probablement de la confusion entretenue par quelques SGBD, dont ACCESS dont les champs des formulaires portent les mêmes noms que les colonnes sous-jacentes dans les tables. D'où ce raccourci.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 992
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 992
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Leducs2r Voir le message
    Les tables, d'une base de donnée, sont composées d'enregistrements (records en anglais) et de champs (fields).
    Le fait d'utiliser les mots lignes et colonnes est un abus qui est issu de l'utilisation des tableurs tels qu'Excel et bien avant Lotus 123.
    La critique est facile, mais encore faut-il être précis...
    Même s'il s'agit de pomme de terre...
    Heureusement que c'est votre premier message... On peut donc vous pardonner les idioties dues à votre inculture...
    À me lire : https://sqlpro.developpez.com/cours/sqlaz/erreurs/#L2

    Lisez au moins des livres sur le SQL et non pas des articles de crétins "savants" victime du syndrome de Dunning-Kruger...
    https://fr.wikipedia.org/wiki/Effet_...ing_kruger.png

    Je pense que vous êtes presque arrivé au sommet de la montagne !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Error converting expression to data type int.
    Par eddyphan dans le forum Développement
    Réponses: 10
    Dernier message: 02/03/2017, 16h15
  2. Réponses: 1
    Dernier message: 02/07/2010, 16h50
  3. Réponses: 1
    Dernier message: 03/03/2009, 14h44
  4. [SQL SERVER] Syntax error converting the varchar value
    Par freud dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2007, 17h51
  5. Syntax error converting character string to smalldatetime data type.
    Par Anthony.Desvernois dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/07/2007, 17h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo