sql >> Databáze >  >> RDS >> PostgreSQL

Jak používat postgresql any s daty jsonb

employees->'employment'->'benefits' je pole json, takže byste jej měli zrušit vnoření, abyste mohli používat jeho prvky v any porovnání. Použijte funkci jsonb_array_elements_text() v laterální připojení :

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

Syntaxe

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

je ekvivalentní

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

Slovo lateral lze vynechat. Pro dokumentaci :

Viz také:Jaký je rozdíl mezi LATERAL a poddotazem v PostgreSQL?

Syntaxe

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

je forma aliasingu podle dokumentace



  1. Spojení vnořených smyček a výkonové cívky

  2. Doporučené postupy replikace MySQL

  3. Dokončete volání AJAX před přesměrováním tlačítka PayPal

  4. Filtr MySQL JSON_CONTAINS Jakákoli hodnota z pole