Tidak ada operator persamaan (atau ketidaksetaraan) untuk tipe data json
secara keseluruhan, karena kesetaraan sulit untuk dibangun. Pertimbangkan jsonb
di Postgres 9.4 atau lebih baru, jika memungkinkan. Detail lebih lanjut dalam jawaban terkait ini di dba.SE (bab terakhir):
- Bagaimana cara menghapus elemen yang diketahui dari larik JSON[] di PostgreSQL?
SELECT DISTINCT json_column ...
atau ... GROUP BY json_column
gagal karena alasan yang sama (tidak ada operator kesetaraan).
Mentransmisikan kedua sisi ekspresi ke text
memungkinkan =
atau <>
operator, tapi itu biasanya tidak dapat diandalkan karena ada banyak kemungkinan representasi teks untuk sama nilai JSON. Di Postgres 9.4 atau lebih baru, transmisikan ke jsonb
sebagai gantinya. (Atau gunakan jsonb
untuk memulai.)
Namun , untuk kasus khusus ini (objek kosong ) berfungsi dengan baik:
select * from test where foo::text <> '{}'::text;