sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo consultar una columna json para objetos vacíos?

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;