sql >> Databasteknik >  >> RDS >> PostgreSQL

Använda Postgres JSON-funktioner på tabellkolumner

Uttrycken efter select måste utvärderas till ett enda värde. Sedan jsonb_to_recordset returnerar en uppsättning rader och kolumner, du kan inte använda den där.

Lösningen är en cross join lateral , som låter dig utöka en rad till flera rader med hjälp av en funktion. Det ger dig enstaka rader som select kan agera på. Till exempel:

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'

Observera att #>> operatör returnerar typ text , och #> operatorn returnerar typen jsonb . Som jsonb_to_recordset förväntar sig jsonb som första parameter använder jag #> .

Se hur det fungerar på rextester.com



  1. Sql för att få alla vänner till vänner som inte är min vän

  2. Hexsträng till heltalskonvertering i Amazon Redshift

  3. Aggregera funktion över ett givet tidsintervall

  4. Vilken kolumndatatyp ska jag använda för att lagra stora mängder text eller html