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

Làm thế nào để truy vấn một cột json cho các đối tượng trống?

Không có toán tử không bình đẳng (hoặc bất bình đẳng) cho kiểu dữ liệu json nói chung, bởi vì sự bình đẳng rất khó thiết lập. Xem xét jsonb trong Postgres 9.4 trở lên, nếu có thể. Thêm chi tiết trong câu trả lời liên quan này trên dba.SE (chương cuối):

  • Làm cách nào để xóa các phần tử đã biết khỏi mảng JSON [] trong PostgreSQL?

SELECT DISTINCT json_column ... hoặc ... GROUP BY json_column không thành công vì lý do tương tự (không có toán tử bình đẳng).

Truyền cả hai mặt của biểu thức thành text cho phép = hoặc <> nhưng điều đó thường không đáng tin cậy vì có thể có nhiều biểu diễn văn bản cho cùng một Giá trị JSON. Trong Postgres 9.4 trở lên, truyền tới jsonb thay thế. (Hoặc sử dụng jsonb để bắt đầu.)

Tuy nhiên , cho trường hợp cụ thể này ( đối tượng trống ) nó hoạt động tốt:

select * from test where foo::text <> '{}'::text;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Vùng chứa Spring Docker không thể truy cập vùng chứa Postgres Docker

  2. Quản lý một Bản cam kết PostgreSQL khác

  3. Cột động trong postgres câu lệnh SELECT

  4. Tạo các giá trị DEFAULT trong CTE UPSERT bằng PostgreSQL 9.3

  5. Chính xác thì CẤP SỬ DỤNG TRÊN SCHEMA làm gì?