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;