Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/04/2011, 11h38   #1
Invité de passage
 
Inscription : janvier 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 8
Points : 2
Points : 2
Par défaut Conversion chaîne de caractère en nombre décimal

Bonjour,

je souhaite convertir dans une table une colonne de type varchar en type real. Je voulais utiliser la fonction to_number stocké dans Postgres mais je n'arrive pas à trouver d'exemple sur comment déclarer les champs d'entrée (dans ma table, hauteur_chute) et de sortie (hauteur_chute_reel)

Je voulais créer une fonction équivalent autrement si ce n'est pas possible avec to_number mais là encore ca bloque sur la syntaxe ..

Code :
1
2
3
4
5
6
7
8
9
CREATE function_numeric (VARCHAR, REAL) RETURNS REAL AS '
DECLARE
var1 ALIAS FOR $1;
var2 ALIAS FOR $2;
BEGIN
SELECT hauteur_chute AS var1 FROM bdsat.obs_places_roe;
SELECT hauteur_chute_reel AS var2 FROM bdsat.obs_places_roe;
END;
' langage 'plpgsql';
Si quelqu'un peut m'aiguiller avec cette fonction?
Aquatic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2011, 12h38   #2
Modérateur
 
Inscription : octobre 2008
Messages : 1 505
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 505
Points : 2 034
Points : 2 034
La fonction s'éloigne trop du problème à résoudre.
Apparemment il faut que tu fasses simplement une requête du genre:
Code :
UPDATE TABLE SET col_type_reel = to_number(col_type_texte, format)
Et suivant le format du texte, peut-être qu'un simple CAST serait préférable à to_number.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 11h08   #3
Invité de passage
 
Inscription : janvier 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : janvier 2011
Messages : 8
Points : 2
Points : 2
Merci pour la réponse Désolé de répondre si tardivement mais j'étais en déplacement

J'ai essayé les deux solutions donc pour la conversion de type:

Code :
UPDATE bdsat.obs_places_roe SET hauteur_chute_reel = to_number(hauteur_chute, '99G999D9S')
et

Code :
cast(obs_places_roe.hauteur_chute) AS numeric(5,2) FROM bdsat.obs_places_roe
mais j'ai une erreur de syntaxe à chaque fois que je n'arrive pas à identifier...

Code :
1
2
3
4
5
6
********** Erreur **********
 
ERREUR: la colonne « hauteur_chute_reel » est de type real mais l'expression est de type character varying
État SQL :42804
Astuce : Vous devez réécrire l'expression ou lui appliquer une transformation de type.
Caractère : 59
Aquatic est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h09.


 
 
 
 
Partenaires

Hébergement Web