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

MS SQL Server Discussion :

[MSSQL] conversion de type


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Par défaut [MSSQL] conversion de type
    Bonjour à tous,

    Je tente de faire la MAJ d'une table grâce à une autre table. Seulement une colonne doit respectivement mettre a jour une autre colonne qui ne possède pas le même type, la colonne source est en CHAR et la colonne final et en FLOAT.

    j'ai vue sur le site msdn que cette conversion est implicite...apparemment pas car j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Msg 8114, Niveau 16, État 5, Ligne 1
    Erreur de conversion du type de données varchar en float.
    .

    j'ai donc essayer de passer par des fonctions de conversion comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    INSERT INTO [GT].[dbo].[REF_CONSTRtest]
               ([Reference]
               ,[Designation]
               , [P_vente_HT]
                )
     
         SELECT refconst, des_const , CAST(code_rem_ref as float)
         FROM [GT].[dbo].[TAB_TAMPON]
    .

    Et la c'est le drame, j'obtient la même erreur que précèdement.

    Si vous avez une idée du pourquoi du comment n'hésité pas a m'en faire part merci beaucoup.

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 112
    Par défaut
    Salut
    la colonne code_rem_ref de type CHAR contient elle des valeurs autres que numerique?
    si oui tu pourra pas mettre du text dans un Float

    ce que tu pourrais faire c'est de faire un test sur code_rem_ref, quand c'est numerique tu fait la MAJ/Insertion avec la valeur de code_rem_ref sinon tu remplace la valeur avec un zero ou NULL!

    Bonne jounrée!

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Par défaut
    Salut ,
    Est-ce que le fait d'avoir un NULL dans "code_rem_ref" peut empecher la conversion ?

    EDIT : oui en fait il y a bien des caractere de temps en temps dans code_rem_ref. Je vais utiliser ton idée.

    Heu une idée de comment je pourrai faire ?

    Merci.

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 112
    Par défaut
    Salut,

    je pense pas que le NULL peut provoquer l'erreur de converion, mais je suis pas certain.

    Pour ajouter une condition dans ta requete voici un exemple:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT refconst, des_const , (SELECT CASE ISNUMERIC(code_rem_ref) CASE 0 THEN 0 ELSE code_rem_ref END)
    FROM [GT].[dbo].[TAB_TAMPON]
    La fonction ISNUMERIC(PARAM) retourne 0 si PARAM n'est pas numeric et 1 s'il l'est.
    donc l'idée est la suivant:

    -Si isnumeric() retourne 0 tu prend zero comme valeur pour ta colonne (tu peux changer et mettre NULL à la place)
    -Sinon on prend la valeur de code_rem_ref


    Voila, j'espere que ceci t'aideras!

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Par défaut
    dans l'impatiente j'avais essayer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     SELECT [vente_ht_ref]
    FROM [GT].[dbo].[TAB_TAMPON]
    WHERE ([vente_ht_ref]  like '%[A-Z]%' AND [vente_ht_ref] LIKE '% %')
    Mais cela ne s'est pas avéré concluant(toujours la meme erreur).

    Donc je vais tester ta solution.

    Merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 41
    Par défaut
    Il me dit qu'il y a une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Msg 156, Niveau 15, État 1, Ligne 1
    Syntaxe incorrecte vers le mot clé 'CASE'.
    JE ne me suis jamais servit de CASE je ne vois pas trop d'ou viens l'erreur.

    EDIT : j'ai essayé ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    INSERT INTO [GT].[dbo].[REF_CONSTRtest]
               ([Reference]
               ,[Designation]
               , [P_vente_HT]
                )
     
         SELECT refconst, des_const , (SELECT [vente_ht_ref] FROM [GT].[dbo].[TAB_TAMPON] WHERE ([vente_ht_ref] NOT like '%[A-Z]%'))
         FROM [GT].[dbo].[TAB_TAMPON]
    Mais la triste reponse de mssql a été assez seche :

    [CODE]
    Msg 512, Niveau 16, État 1, Ligne 1
    La sous-requête a retourné plusieurs valeurs. Cela n'est pas autorisé quand la sous-requête suit =, !=, <, <= , >, >= ou quand elle est utilisée en tant qu'expression.
    L'instruction a été arrêtée.
    [CODE]

    Encore une fois si vous avez des idée ^^

Discussions similaires

  1. [DATE][CONVERSION] du type numerique au type date
    Par hamed dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 06/04/2005, 16h16
  2. Conversion de type
    Par sovitec dans le forum Langage
    Réponses: 5
    Dernier message: 15/12/2004, 14h29
  3. Conversion de type
    Par poirier dans le forum ASP
    Réponses: 2
    Dernier message: 06/07/2004, 10h30
  4. [MYSQL] conversion de type sur import de script
    Par sebos63 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 27/08/2003, 10h00
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

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