आपका उदाहरण काम नहीं करना चाहिए क्योंकि jsonb
. के बीच कोई अंतर्निहित कास्ट नहीं है और text
प्रकार। आप कास्टिंग लागू कर सकते हैं:
SELECT '{"this": 1, "this_that": 0, "this_and_that": 5}'::jsonb::text
like '%"this%';
यह साफ समाधान नहीं है। कुछ बेहतर है अनपैकिंग जोंस, और अनपैक्ड डेटा को लेटरल जॉइन के साथ फ़िल्टर करना
postgres=# SELECT key FROM myjson, lateral jsonb_each_text(j)
WHERE key LIKE 'this\_%';
┌───────────────┐
│ key │
╞═══════════════╡
│ this_that │
│ this_and_that │
└───────────────┘
(2 rows)