Comment convertir une chaîne en double précision dans PostgreSQL? [fermé]

19

Comment convertir une chaîne en double précision dans PostgreSQL?

J'ai essayé quelque chose comme:

update points set latitude2 = cast(latitude as double) ;

où latitude est une chaîne et latitude2 est un double. Je n'arrive pas à le faire fonctionner.

Yazz.com
la source
6
« impossible de le faire fonctionner » n'est pas un message d'erreur Postgres valide. Veuillez poster l'erreur complète (ou décrire ce qui ne fonctionne pas exactement)
a_horse_with_no_name
Eww, c'est une très mauvaise question pour une autre raison, car vous posez des questions sur la longitude et la latitude et elles ne devraient pas être stockées en double de toute façon.
Evan Carroll

Réponses:

42

double n'est pas un type de données postgres:

select cast('324342' as double);
ERREUR: le type "double" n'existe pas
LIGNE 1: sélectionnez le casting ('324342' comme double);
                                ^

mais double precisionc'est:

select cast('132342' as double precision);
| float8 |
| : ----- |
| 132342 |

Alors essayez:

update points set latitude2 = cast(latitude as double precision) ;

si vous préférez, vous pouvez utiliser float* à la place, car selon les documents :

un flotteur sans précision spécifiée signifie une double précision

select cast('132342' as float);
| float8 |
| : ----- |
| 132342 |

db <> violon ici


* ou float(n)où 25 <= n <= 53 car cela signifie également double précision

Jack Douglas
la source