Próbuję następujące zapytanie.Jak przekonwertować PostgreSQL 9.4 typ jsonb unosić
SELECT (json_data->'position'->'lat') + 1.0 AS lat FROM updates LIMIT 5;
(1,0 jest tylko tam, aby wymusić konwersję do pływaka mojego aktualnego zapytania są znacznie bardziej skomplikowane, zapytanie to jest tylko przypadek testowy dla problemu)
pojawia się błąd.
ERROR: operator does not exist: jsonb + numeric
Jeśli dodać w wyraźnej rzucania:
SELECT (json_data->'position'->'lat')::float + 1.0 AS lat FROM updates LIMIT 5;
błąd staje:
ERROR: operator does not exist: jsonb + double precesion
Rozumiem, że większość wartości jsonb nie może być wrzucony do pływaków, ale w tym przypadku wiem, że łata są wszystkie numery JSON.
Czy istnieje funkcja, która rzuca wartości jsonb na wartości pływające (lub zwraca wartości NULL dla nieoznaczalnego)?
Nie ma 'try_cast' funkcja domyślnie w PostgreSQL. Musisz napisać je sam. –