PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak przekonwertować postgresql 9.4 jsonb na obiekt bez języka po stronie funkcji/serwera?

Użyj jsonb_populate_record() (lub json_populate_record() dla json ) z dobrze znanym typem wiersza jako docelowym. Możesz użyć tabeli tymczasowej, aby zarejestrować typ do użytku ad hoc (jeśli nie możesz użyć istniejącego tabela lub niestandardowy typ złożony):

CREATE TEMP TABLE obj(a int, b int, c int, d int);

Następnie:

SELECT t.id, d.*
FROM   test t
     , jsonb_populate_record(null::obj, t.data) d;

Lub użyj jsonb_to_record() (lub json_to_record() dla json ) i podaj listę definicji kolumn z wywołaniem:

SELECT t.id, d.*
FROM   test t
     , jsonb_to_record(t.data) d(a int, b int, c int, d int);

Lub wyodrębnij i rzucaj każde pole indywidualnie:

SELECT id, (data->>'a')::int AS a, (data->>'b')::int AS b
         , (data->>'c')::int AS c, (data->>'d')::int AS d
FROM   test;

Wszystkie trzy działają dla json i jsonb zarówno. Wystarczy użyć odpowiedniego wariantu funkcji.

Powiązane:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać komentarz do roli z bazy danych PostgreSQL

  2. Optymalizacja wyszukiwania pełnotekstowego Django - Postgres

  3. Oracle do PostgreSQL:ROZPOCZNIJ OD/POŁĄCZ PRZEZ

  4. Zaktualizuj PostgreSQL z 9.6 do 10.0 na Ubuntu 16.10

  5. Ile rekordów mogę przechowywać w 5 MB PostgreSQL w Heroku?