sql >> Databáze >  >> RDS >> PostgreSQL

Použití funkcí Postgres JSON na sloupcích tabulky

Výrazy za select se musí vyhodnotit na jedinou hodnotu. Od jsonb_to_recordset vrátí sadu řádků a sloupců, nemůžete ji tam použít.

Řešením je cross join lateral , která umožňuje rozbalit jeden řádek na více řádků pomocí funkce. Získáte tak jednotlivé řádky, které select může jednat. Například:

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'

Všimněte si, že #>> operátor vrátí typ text a #> operátor vrátí typ jsonb . Jako jsonb_to_recordset očekává jsonb jako první parametr používám #> .

Podívejte se, jak to funguje na rextester.com



  1. LibreOffice:'com.mysql.jdbc.driver' nelze načíst

  2. Jak odstranit velká data tabulky v SQL bez protokolu?

  3. Jak zobrazit datum v britském formátu na SQL Server (T-SQL)

  4. mysql:whoami?