PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Използване на JSON функции на Postgres върху колони на таблица

Изразите след select трябва да се оцени на една стойност. Тъй като jsonb_to_recordset връща набор от редове и колони, не можете да го използвате там.

Решението е cross join lateral , което ви позволява да разширите един ред в множество редове с помощта на функция. Това ви дава единични редове, които select може да действа върху. Например:

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'

Имайте предвид, че #>> оператор връща тип text и #> операторът връща тип jsonb . Като jsonb_to_recordset очаква jsonb като първи параметър използвам #> .

Вижте как работи на 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. Задаване на името на схемата в postgres с помощта на R

  2. SQL:Обратно транспониране на таблица

  3. PostgreSQL пул на връзки с PgBouncer

  4. Използване на кеширане на pg_prewarm и pg_hibernator на contrib в PostgreSQL 9.4.

  5. Какво е очакваното поведение за множество функции, връщащи набор в клауза SELECT?