2014-12-28 15 views
6

używam tej kwerendy szukać danych w tabeli, gdzie profile jest kolumną JSONB i to działa, ale tylko wtedy, gdy nazwa jest dokładnie toJak wykonać wyszukiwanie uwzględniające wielkość liter w kolumnie Postgres 9.4 JSONB?

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

to możliwe, aby mieć większą elastyczność takiego przypadku niewrażliwości , symbole wieloznaczne i tak dalej?

Coś "Super%" lub "super user"

+1

Do tego potrzebujemy czegoś w rodzaju języka zapytań json. Nie ma nic takiego wbudowanego, ale niektórzy ludzie pracują nad rozszerzeniem języka zapytań json. Nie mogę znaleźć referencji już teraz, ale było to omawiane na PGConf EU 2014 w Madrycie; może spojrzeć na listę sesji konferencji. –

+1

Czy odnosisz się do https://github.com/akorotkov/jsquery? Wypróbuję to. – G3z

+0

Tak, właśnie to. Wyglądało to całkiem interesująco. Nie wiem, jak stabilne/dojrzałe/udokumentowane/itp. Jest. –

Odpowiedz

8

znalazłem rozwiązania mojego problemu:

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

ja nie wiem, czy to wykonując dostatecznie dobrze, ale to działa.
Prawdopodobnie warto dodać do niego indeks.

+0

Jaki rodzaj indeksu ma sens w tej sytuacji? Zrozumiałem, że GIN to tylko przyśpieszanie zapytań o powstrzymywanie/istnienie kluczy – Tarlen

Powiązane problemy