PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Sử dụng các hàm Postgres JSON trên các cột của bảng

Các biểu thức sau select phải đánh giá đến một giá trị duy nhất. Kể từ jsonb_to_recordset trả về một tập hợp các hàng và cột, bạn không thể sử dụng nó ở đó.

Giải pháp là một bên cross join lateral , cho phép bạn mở rộng một hàng thành nhiều hàng bằng cách sử dụng một hàm. Điều đó cung cấp cho bạn các hàng đơn select có thể hành động. Ví dụ:

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'

Lưu ý rằng #>> nhà điều hành trả về loại text#> toán tử trả về kiểu jsonb . Dưới dạng jsonb_to_recordset mong đợi jsonb là tham số đầu tiên của nó mà tôi đang sử dụng #> .

Xem nó hoạt động tại 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. SQL Tìm tất cả con cháu trực tiếp trong một cây

  2. Quá nhiều phiên bản postgresql được cài đặt:Làm cách nào để chỉ bắt đầu một phiên bản postgresql đã chọn hoặc xóa những phiên bản không cần thiết? Cổng cần thiết là tiêu chuẩn 5432

  3. Tính toán một ngày trong Postgres bằng cách thêm tháng?

  4. Tùy chọn thả xuống biểu mẫu Python được điền bởi sql

  5. CHÈN VÀO ... TỪ CHỌN ... QUAY LẠI ánh xạ id