Il n'y a pas d'opérateur d'égalité (ou d'inégalité) pour le type de données json
dans son ensemble, car l'égalité est difficile à établir. Considérez jsonb
dans Postgres 9.4 ou version ultérieure, lorsque cela est possible. Plus de détails dans cette réponse connexe sur dba.SE (dernier chapitre):
- Comment supprimer des éléments connus d'un tableau JSON[] dans PostgreSQL ?
SELECT DISTINCT json_column ...
ou ... GROUP BY json_column
échoue pour la même raison (pas d'opérateur d'égalité).
Conversion des deux côtés de l'expression en text
autorise =
ou <>
opérateurs, mais ce n'est normalement pas fiable car il existe de nombreuses représentations textuelles possibles pour le même Valeur JSON. Dans Postgres 9.4 ou version ultérieure, convertissez en jsonb
Au lieu. (Ou utilisez jsonb
pour commencer.)
Cependant , pour ce cas particulier (objet vide ) ça marche très bien :
select * from test where foo::text <> '{}'::text;