Няма оператор за равенство (или неравенство) за типа данни json
като цяло, защото е трудно да се установи равенство. Помислете за jsonb
в Postgres 9.4 или по-нова версия, когато това е възможно. Повече подробности в този свързан отговор на dba.SE (последна глава):
- Как да премахнете известни елементи от JSON[] масив в PostgreSQL?
SELECT DISTINCT json_column ...
или ... GROUP BY json_column
неуспешно поради същата причина (няма оператор за равенство).
Прехвърляне на двете страни на израза към text
позволява =
или <>
оператори, но това обикновено не е надеждно, тъй като има много възможни текстови представяния за същите JSON стойност. В Postgres 9.4 или по-нова версия, прехвърляйте към jsonb
вместо. (Или използвайте jsonb
за начало.)
Въпреки това , затози конкретен случай (празен обект ) работи добре:
select * from test where foo::text <> '{}'::text;