Nie ma nie ma operatora równości (lub nierówności) dla typu danych json jako całość, ponieważ równość jest trudna do ustanowienia. Rozważ jsonb w Postgresie 9.4 lub nowszym, jeśli jest to możliwe. Więcej szczegółów w tej powiązanej odpowiedzi na dba.SE (ostatni rozdział):
- Jak usunąć znane elementy z tablicy JSON[] w PostgreSQL?
SELECT DISTINCT json_column ... lub ... GROUP BY json_column niepowodzenie z tego samego powodu (brak operatora równości).
Rzutowanie obu stron wyrażenia na tekst pozwala = lub <> operatorów, ale zwykle nie jest to niezawodne, ponieważ istnieje wiele możliwych reprezentacji tekstowych dla tego samego Wartość JSON. W Postgresie 9.4 lub nowszym przesyłaj do jsonb zamiast. (Lub użyj jsonb na początek.)
Jednak , dla tego konkretnego przypadku (pusty obiekt ) działa dobrze:
select * from test where foo::text <> '{}'::text;