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

Korzystanie z funkcji Postgres JSON w kolumnach tabeli

Wyrażenia po select musi ewaluować do pojedynczej wartości. Od jsonb_to_recordset zwraca zestaw wierszy i kolumn, nie możesz ich tam użyć.

Rozwiązaniem jest cross join lateral , który pozwala rozwinąć jeden wiersz na wiele wierszy za pomocą funkcji. To daje pojedyncze wiersze, które select może działać. Na przykład:

select  *
from    journal j
cross join lateral
        jsonb_to_recordset(j.data#>'{context, data, files}') as d(id int, name text)
where   j.id = 'ap32bbofopvo7pjgo07g'

Pamiętaj, że #>> operator zwraca typ text i #> operator zwraca typ jsonb . Jako jsonb_to_recordset oczekuje jsonb jako pierwszy parametr używam #> .

Zobacz, jak działa na rextester.com



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Docker Compose i Postgres :Nazwa nie działa

  2. Jak wylistować rekordy z datą z ostatnich 10 dni?

  3. Jak skonfigurować replikację klastrów do klastrów dla PostgreSQL

  4. Jak podzielić wartość na wiele wierszy w znaku nowej linii w PostgreSQL?

  5. Najlepszy sposób na uzyskanie liczby wyników przed zastosowaniem LIMIT