Jak przekonwertować ciąg znaków na podwójną precyzję w PostgreSQL? [Zamknięte]

19

Jak przekonwertować ciąg znaków na podwójną precyzję w PostgreSQL?

Próbowałem czegoś takiego:

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

gdzie szerokość geograficzna jest łańcuchem, a szerokość geograficzna 2 jest podwójną. Po prostu nie mogę go uruchomić.

Yazz.com
źródło
6
nie można uruchomić ” nie jest prawidłowym komunikatem o błędzie Postgres. Proszę zamieścić cały błąd (lub opisać, co dokładnie nie działa)
a_horse_with_no_name
Eww, to jest naprawdę złe pytanie z innego powodu, ponieważ pytasz o długość i szerokość geograficzną i i tak nie powinny być one przechowywane jako liczba podwójna.
Evan Carroll

Odpowiedzi:

42

double nie jest typem danych postgres:

select cast('324342' as double);
BŁĄD: typ „podwójny” nie istnieje
LINIA 1: wybierz obsadę („324342” jako podwójny);
                                ^

ale double precisionjest:

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

Więc spróbuj:

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

jeśli wolisz, możesz zamiast tego użyć float* , ponieważ zgodnie z dokumentami :

liczba zmiennoprzecinkowa bez określonej precyzji oznacza podwójną precyzję

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

db <> skrzypce tutaj


* lub float(n)gdzie 25 <= n <= 53, ponieważ to również oznacza podwójną precyzję

Jack Douglas
źródło