Es gibt keinen Gleichheits- (oder Ungleichheits-)Operator für den Datentyp json
als Ganzes, weil Gleichberechtigung schwer herzustellen ist. Betrachten Sie jsonb
in Postgres 9.4 oder höher, wo dies möglich ist. Weitere Details in dieser verwandten Antwort auf dba.SE (letztes Kapitel):
- Wie entferne ich bekannte Elemente aus einem JSON[]-Array in PostgreSQL?
SELECT DISTINCT json_column ...
oder ... GROUP BY json_column
scheitern aus demselben Grund (kein Gleichheitsoperator).
Umwandlung beider Seiten des Ausdrucks in text
erlaubt =
oder <>
Operatoren, aber das ist normalerweise nicht zuverlässig, da es viele mögliche Textdarstellungen für dasselbe gibt JSON-Wert. In Postgres 9.4 oder höher in jsonb
umwandeln stattdessen. (Oder verwenden Sie jsonb
zu beginnen.)
Allerdings , für diesen speziellen Fall (leeres Objekt ) es funktioniert einwandfrei:
select * from test where foo::text <> '{}'::text;