PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come interrogare una colonna json per oggetti vuoti?

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;