PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como consultar uma coluna json para objetos vazios?


Não há operador de igualdade (ou desigualdade) para o tipo de dados json como um todo, porque a igualdade é difícil de estabelecer. Considere jsonb no Postgres 9.4 ou posterior, onde isso for possível. Mais detalhes nesta resposta relacionada em dba.SE (último capítulo):
  • Como remover elementos conhecidos de um array JSON[] no PostgreSQL?

SELECT DISTINCT json_column ... ou ... GROUP BY json_column falham pelo mesmo motivo (sem operador de igualdade).

Convertendo ambos os lados da expressão para text permite = ou <> operadores, mas isso normalmente não é confiável, pois há muitas representações de texto possíveis para o mesmo valor JSON. No Postgres 9.4 ou posterior, converta para jsonb em vez de. (Ou use jsonb começar com.)

No entanto , para este caso específico (objeto vazio ) funciona muito bem:
select * from test where foo::text <> '{}'::text;