PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak używać postgresql any z danymi jsonb?

employees->'employment'->'benefits' jest tablicą json, więc powinieneś ją rozpakować, aby używać jej elementów w any porównanie.Użyj funkcji jsonb_array_elements_text() w złączeniu bocznym :

select *
from 
    employees, 
    jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)
where
    benefit = any('{Insurance A, Insurance B}'::text[]);

Składnia

from 
    employees, 
    jsonb_array_elements_text(employees->'employment'->'benefits')

jest odpowiednikiem

from 
    employees, 
    lateral jsonb_array_elements_text(employees->'employment'->'benefits')

Słowo lateral można pominąć. dokumentacja :

Zobacz też:Jaka jest różnica między LATERAL a podzapytaniem w PostgreSQL?

Składnia

from jsonb_array_elements_text(employees->'employment'->'benefits') benefits(benefit)

jest formą aliasingu, zgodnie z dokumentacją



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zakres Rails dla IS NOT NULL i nie jest pusty/pusty?

  2. Jak utworzyć sekwencję, jeśli nie istnieje?

  3. Zmaterializowana ścieżka Postgres - Jakie są korzyści z używania ltree?

  4. Gdzie pliki bazy danych Postgres są zapisywane w Ubuntu?

  5. Django z aplikacją PostgreSQL na Heroku nie synchronizuje się