2014-12-28 5 views
6

sto usando questa query per cercare i dati in una tabella in cui profile è una colonna JSONB e funziona, ma solo se il nome è esattamente questocome si esegue una ricerca senza distinzione tra maiuscole e minuscole in una colonna JSONB Postgres 9.4?

SELECT * FROM "users" WHERE "profile" @> '{"name":"Super User"}' 

è possibile avere una maggiore flessibilità come il caso di insensibilità , caratteri jolly e così via?

Qualcosa di simile "Super%" o "super user"

+1

Per fare ciò avremmo bisogno di qualcosa come un linguaggio di query json. Non c'è niente come questo built-in, ma alcune persone stanno lavorando su un'estensione del linguaggio di query json. Non riesco a trovare riferimenti in questo momento, ma è stato discusso al PGConf EU 2014 a Madrid; forse guarda l'elenco delle sessioni della conferenza. –

+1

ti riferisci a https://github.com/akorotkov/jsquery? proverò a quello – G3z

+0

Sì, è quello. Sembrava piuttosto interessante. Non so quanto sia stabile/maturo/documentato/ecc. –

risposta

8

ho trovato la soluzione al mio problema:

SELECT * FROM "users" WHERE (profile #>> '{name}') ILIKE 'super %' 

Non so se questo sta eseguendo abbastanza bene ma funziona.
Probabilmente è consigliabile aggiungere un indice.

+0

Che tipo di indice ha senso in questa situazione? Ho capito che GIN accelera solo le query di contenimento/esistenza sui tasti – Tarlen

Problemi correlati