sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur kan jag utföra en LIKE-fråga för en jsonb-nyckel?

Ditt exempel borde inte fungera eftersom det inte finns implicita cast mellan jsonb och text typer. Du kan tvinga fram casting:

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

Det är ingen ren lösning. Något bättre är att packa upp json och filtrera över uppackad data med lateral join

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



  1. Hur man importerar/återställer MySql-tabeller med PHP

  2. Lyssna fråga timeout med node-postgres?

  3. Hur man får den näst högsta till lägsta värdeposten baserat på order per fält i PostgreSQL

  4. Få ålder på en person i MySQL