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

Como posso executar uma consulta LIKE para uma chave jsonb?


Seu exemplo não deve funcionar porque não há conversão implícita entre jsonb e text tipos. Você pode impor a transmissão:
SELECT '{"this": 1, "this_that": 0, "this_and_that": 5}'::jsonb::text 
            like '%"this%';

Não é solução limpa. Um pouco melhor é descompactar json e filtrar dados descompactados com junção lateral
postgres=# SELECT key FROM  myjson, lateral jsonb_each_text(j) 
             WHERE key LIKE 'this\_%';
┌───────────────┐
│      key      │
╞═══════════════╡
│ this_that     │
│ this_and_that │
└───────────────┘
(2 rows)