PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment puis-je effectuer une requête LIKE pour une clé jsonb ?

Votre exemple ne devrait pas fonctionner car il n'y a pas de cast implicite entre jsonb et text les types. Vous pouvez imposer la diffusion :

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

Ce n'est pas une solution propre. Il est préférable de décompresser json et de filtrer les données décompressées avec une jointure latérale

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