No hay no hay operador de igualdad (o desigualdad) para el tipo de datos json en su conjunto, porque la igualdad es difícil de establecer. Considere jsonb en Postgres 9.4 o posterior, donde esto sea posible. Más detalles en esta respuesta relacionada en dba.SE (último capítulo):
- ¿Cómo eliminar elementos conocidos de una matriz JSON[] en PostgreSQL?
SELECT DISTINCT json_column ... o ... GROUP BY json_column falla por la misma razón (sin operador de igualdad).
Convertir ambos lados de la expresión en text permite = o <> operadores, pero eso normalmente no es confiable ya que hay muchas representaciones de texto posibles para el mismo Valor JSON. En Postgres 9.4 o posterior, envíe a jsonb en cambio. (O use jsonb para empezar.)
Sin embargo , para este caso en particular (objeto vacío ) funciona bien:
select * from test where foo::text <> '{}'::text;