Wie kann ich eine Zeichenfolge in PostgreSQL in eine doppelte Genauigkeit konvertieren? [geschlossen]

19

Wie kann ich eine Zeichenfolge in PostgreSQL in eine doppelte Genauigkeit konvertieren?

Ich habe versucht, etwas wie:

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

Dabei ist Breitengrad ein String und Breitengrad2 ein Double. Ich kann es einfach nicht zum Laufen bringen.

Zubair
quelle
6
" kann es nicht zum Laufen bringen " ist keine gültige Postgres-Fehlermeldung. Bitte posten Sie den vollständigen Fehler (oder beschreiben Sie, was genau nicht funktioniert)
a_horse_with_no_name
Dies ist aus einem anderen Grund eine wirklich schlechte Frage, da Sie nach Längen- und Breitengrad fragen und diese ohnehin nicht als Doppel gespeichert werden sollten.
Evan Carroll

Antworten:

42

double ist kein Postgres-Datentyp:

select cast('324342' as double);
FEHLER: Typ "double" existiert nicht
LINE 1: Wähle den Cast ('324342' als Double);
                                ^

aber double precisionist:

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

Also versuche:

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

Wenn Sie möchten, können Sie stattdessen float* verwenden, da laut den Dokumenten :

float ohne Angabe einer Genauigkeit bedeutet doppelte Genauigkeit

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

db <> hier fummeln


* oder float(n)mit 25 <= n <= 53, da dies auch doppelte Genauigkeit bedeutet

Jack Douglas
quelle