Er is geen operator voor gelijkheid (of ongelijkheid) voor het gegevenstype json als geheel, omdat gelijkheid moeilijk vast te stellen is. Overweeg jsonb in Postgres 9.4 of later, waar dit mogelijk is. Meer details in dit gerelateerde antwoord op dba.SE (laatste hoofdstuk):
- Hoe verwijder ik bekende elementen uit een JSON[]-array in PostgreSQL?
SELECT DISTINCT json_column ... of ... GROUP BY json_column mislukken om dezelfde reden (geen operator voor gelijkheid).
Beide zijden van de uitdrukking casten naar text staat = . toe of <> operators, maar dat is normaal gesproken niet betrouwbaar omdat er veel mogelijke tekstrepresentaties zijn voor dezelfde JSON-waarde. In Postgres 9.4 of hoger, cast naar jsonb in plaats van. (Of gebruik jsonb om mee te beginnen.)
Echter , voor dit specifieke geval (leeg object ) het werkt prima:
select * from test where foo::text <> '{}'::text;