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

 PostgreSQL Discussion :

Convertion de type


Sujet :

PostgreSQL

  1. #1
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Points : 64
    Points
    64
    Par défaut Convertion de type
    Bonjour,

    J'ai une table avec un champ de type "text". Ce champ contient des valeurs numériques.

    Je souhaite donc faire une conversion de type : de "character" vers "numeric double précision".

    J'ai essayé plusieurs méthodes dont le fait de copier mon champ (type character) dans un nouveau champ (de type numeric double precision) par le biais d'une requête sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE ma_table SET mon_champ_1 = mon_champ_2
    L'erreur suivante m'est renvoyée :

    la colonne mon_champ_2 est de type double precision mais l'expression est de type character

    Tout d'abord, est ce que j'emploie la bonne méthode ?
    Si oui, quelle erreur je fais ?
    Si non, quelle méthode serait-il préférable d'employer ?

    D'avance merci pour votre aide

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Il faut transformer le "text" en "double

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE ma_table SET mon_champ_1 = mon_champ_2::DOUBLE

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    La méthode la plus simple serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER TABLE latable ALTER COLUMN lacolonne 
      TYPE double precision
     USING CAST(lacolonne AS double precision)

  4. #4
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Points : 64
    Points
    64
    Par défaut
    Bonjour,

    Tout d'abord merci à MaitrePylos et estofilo pour leur aide.

    J'ai donc testé les 2 requêtes.

    1) La requête de MaitrePylos a fonctionné dès lors que j'ai créé un deuxième champ de type double précision ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE ma_table SET ma_colonne2 = ma colonne1::DOUBLE PRECISION
    Cependant, le nombre contenu dans ma colonne1 possède jusqu'à 15 chiffres après la virgule, et lors de la conversion de type un arrondi est généré. Exemple : 8.179461352958946 devient 8.17946135295895
    Je ne comprends pas pourquoi ?
    Si j'utilise "double précision" c'est justement pour conserver cette précision.

    2) Quant à la requête estofilo j'obtiens un message d'erreur : "erreur de syntaxe sur ou près de ALTER". Je pense que l'erreur provient clairement de moi et de mon manque d'expérience en matière de constitution de requêtes SQL. Je dois certainement oublier une partie de la syntaxe ?

    Merci d'avance.

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Essaye ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE ma_table SET ma_colonne2 = ma colonne1::NUMERIC(10,15)

  6. #6
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 101
    Points : 64
    Points
    64
    Par défaut
    Ca fonctionne !!! (en créant tout d'abord une colonne "ma_colonne2" de type "numeric (17,15))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE ma_table SET ma_colonne2 = ma_colonne1::NUMERIC (17,15)
    Merci beaucoup pour l'aide apportée et aussi pour la réactivité

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

Discussions similaires

  1. convertion de types
    Par ToTo13 dans le forum Langage
    Réponses: 6
    Dernier message: 27/10/2006, 10h21
  2. Erreur de convertion de type de données
    Par ben_skywalker dans le forum Access
    Réponses: 14
    Dernier message: 06/06/2006, 11h39
  3. [C#] Convertion de type (string/int)
    Par M1000 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 22/05/2006, 16h03
  4. [SQL Server] Error converting data type varchar...
    Par Sir Tengu dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 13/06/2003, 10h46
  5. Convertion de type VARIANT à type CString
    Par j_grue dans le forum MFC
    Réponses: 2
    Dernier message: 07/11/2002, 14h18

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