sql >> Database >  >> RDS >> PostgreSQL

Postgres JSON-functies gebruiken op tabelkolommen

De uitdrukkingen na select moet evalueren tot een enkele waarde. Sinds jsonb_to_recordset retourneert een set rijen en kolommen, je kunt het daar niet gebruiken.

De oplossing is een cross join lateral , waarmee u een rij kunt uitbreiden naar meerdere rijen met behulp van een functie. Dat geeft je enkele rijen die select kan handelen. Bijvoorbeeld:

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'

Merk op dat de #>> operator retourneert type text , en de #> operator retourneert type jsonb . Als jsonb_to_recordset verwacht jsonb als eerste parameter gebruik ik #> .

Zie hoe het werkt op rextester.com



  1. Hoe weet u wanneer een Postgres-tabel is geclusterd en welke indexen zijn gebruikt?

  2. MySQL Illegale mix van collaties

  3. Hoe een tweede vervolgkeuzelijst te tonen op basis van de vorige vervolgkeuzelijst met Javascript

  4. SQL QUERY meerdere zoekopdrachten in één rij om gegevens uit een andere rij in dezelfde tabel te vinden