sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan kan jeg udføre en LIKE-forespørgsel for en jsonb-nøgle?

Dit eksempel burde ikke fungere, fordi der ikke er implicitte cast mellem jsonb og text typer. Du kan gennemtvinge casting:

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

Det er ikke en ren løsning. Noget bedre er at pakke json ud og filtrere over udpakkede 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. Sådan bruges SQL-parametre i en R-markdown SQL-chunk

  2. Forespørgsel, der ignorerer mellemrummene

  3. Hierarkiske forespørgsler

  4. Hvordan timeofday() virker i PostgreSQL