sql >> Database teknologi >  >> RDS >> PostgreSQL

Brug af Postgres JSON-funktioner på tabelkolonner

Udtrykkene efter select skal evalueres til en enkelt værdi. Siden jsonb_to_recordset returnerer et sæt rækker og kolonner, du kan ikke bruge det der.

Løsningen er en cross join lateral , som giver dig mulighed for at udvide en række til flere rækker ved hjælp af en funktion. Det giver dig enkelte rækker, der select kan handle på. For eksempel:

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'

Bemærk, at #>> operatør returnerer typen text , og #> operatør returnerer typen jsonb . Som jsonb_to_recordset forventer jsonb som dens første parameter bruger jeg #> .

Se det fungere på rextester.com



  1. syntaksfejl for mysql-deklaration af variabel

  2. Nem 'opret tabel fra visning'-syntaks i mysql?

  3. PHP - MySQL adgang nægtet fejl - Virker i andre programmer

  4. Kan jeg opdele en forespørgsel i flere forespørgsler eller skabe parallelitet for at fremskynde en forespørgsel?