Non esiste nessun operatore di uguaglianza (o disuguaglianza) per il tipo di dati json nel complesso, perché l'uguaglianza è difficile da stabilire. Considera jsonb in Postgres 9.4 o successivo, ove possibile. Maggiori dettagli in questa risposta correlata su dba.SE (ultimo capitolo):
- Come rimuovere elementi noti da un array JSON[] in PostgreSQL?
SELECT DISTINCT json_column ... o ... GROUP BY json_column fallire per lo stesso motivo (nessun operatore di uguaglianza).
Casting di entrambi i lati dell'espressione in text consente = o <> operatori, ma normalmente non è affidabile poiché ci sono molte possibili rappresentazioni di testo per lo stesso Valore JSON. In Postgres 9.4 o versioni successive, esegui il cast su jsonb invece. (Oppure usa jsonb per cominciare.)
Tuttavia , per questo caso particolare (oggetto vuoto ) funziona bene:
select * from test where foo::text <> '{}'::text;