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;