sql >> Database >  >> RDS >> PostgreSQL

Hoe kan ik een LIKE-query uitvoeren voor een jsonb-sleutel?

Uw voorbeeld zou niet moeten werken omdat er geen impliciete cast tussen jsonb . is en text soorten. Je kunt casten afdwingen:

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

Het is geen schone oplossing. Wat beter is om json uit te pakken en uitgepakte gegevens te filteren met laterale join

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



  1. MySQL-query naar dynamische rankingrijen

  2. Hoe leeftijd te krijgen met behulp van de kolom Geboortedatum op MySQL-query?

  3. PL/SQL extraheer SELECT-instructie kolomnamen uit aangepaste query

  4. Vraagtabel met een ampersand in de naam