sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man använder postgresql någon med jsonb-data

employees->'employment'->'benefits' är en json-array, så du bör avinstallera den för att använda dess element i any jämförelse.Använd funktionen jsonb_array_elements_text() i lateral koppling :

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

Syntaxen

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

motsvarar

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

Ordet lateral kan utelämnas. För dokumentationen :

Se även:Vad är skillnaden mellan LATERAL och en underfråga i PostgreSQL?

Syntaxen

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

är en form av alias, enligt dokumentationen



  1. Genom att kombinera JSON_SEARCH och JSON_EXTRACT får jag:Ogiltigt JSON-sökvägsuttryck.

  2. Om du använder indexerade vyer och MERGE, läs detta!

  3. Anslut mySQL till Android

  4. Vad innebär det att dela upp en Microsoft Access-databas?