este problema se puede resolver de variadas maneras, pero nosotros te dejamos la resolución más completa en nuestra opinión.
Solución:
Hay sin operador de igualdad (o desigualdad) para el tipo de datos json
en su conjunto, porque la igualdad es difícil de establecer. Considerar 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 un JSON[] array en PostgreSQL?
SELECT DISTINCT json_column ...
o ... GROUP BY json_column
falla por la misma razón (sin operador de igualdad).
Convirtiendo ambos lados de la expresión a text
permite =
o <>
operadores, pero eso normalmente no es confiable ya que hay muchas representaciones de texto posibles para el mismo Valor JSON.
Sin embargopor este caso particular (objeto vacío) funciona bien:
select * from test where foo::text <> ''::text;
A partir de PostgreSQL 9.5 este tipo de consulta con datos JSON no es posible. Por otro lado, estoy de acuerdo en que sería muy útil y creé una solicitud para ello:
https://postgresql.uservoice.com/forums/21853-general/suggestions/12305481-check-if-json-is-empty
Siéntase libre de votarlo, ¡y con suerte se implementará!
JSON vacío array []
también podría ser relevante.
Entonces esto podría funcionar para ambos []
y :
select * from test where length(foo::text) > 2 ;
Sección de Reseñas y Valoraciones
Si posees alguna incertidumbre y forma de acrecentar nuestro reseña eres capaz de dejar una explicación y con gusto lo estudiaremos.