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

¿Cómo puedo realizar una consulta LIKE para una clave jsonb?

Su ejemplo no debería funcionar porque no hay conversión implícita entre jsonb y text tipos Puede forzar la conversión:

SELECT '{"this": 1, "this_that": 0, "this_and_that": 5}'::jsonb::text 
            like '%"this%';

No es una solución limpia. Algo mejor es desempaquetar json y filtrar los datos desempaquetados con unión lateral

postgres=# SELECT key FROM  myjson, lateral jsonb_each_text(j) 
             WHERE key LIKE 'this\_%';
┌───────────────┐
│      key      │
╞═══════════════╡
│ this_that     │
│ this_and_that │
└───────────────┘
(2 rows)