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;