/ / Ako získať dáta z poľa postgresql json - sql, json, postgresql

Ako získať dáta z postgresql json pole poľa - sql, json, postgresql

Mám tabuľkové pole typu jsonb a nižšie uvedené údaje.

{"roles": ["7", "73", "163"]}

Musím skontrolovať, či je „73“ prítomné alebo nie prostredníctvom postgresql.

Už som hľadal, ale jediné riešenie poskytuje objekt objektu, nie objekt poľa.

Skúsil som nižšie dotaz, ale to nefunguje

SELECT *
FROM table
WHERE field->"roles" ? ARRAY ["73"];

--updated--

Potrebujem iba ten záznam, ktorý má presnú hodnotu

{"role": ["7"]}

{"role": ["7", "73", "163"]}}

t. j. pole obsahuje iba „7“ a nič iné.

odpovede:

1 pre odpoveď č. 1

Podľa dokumentácie https://www.postgresql.org/docs/current/static/functions-json.html#FUNCTIONS-JSONB-OP-TABLE pre všetky vaše prípady:

Existuje –jedno– kľúč v poli json:

SELECT  *
FROM    table
WHERE   field -> "roles" ? "73";

Existuje -any- z klávesov vpravo v poli json:

SELECT  *
FROM    table
WHERE   field -> "roles" ?| ARRAY[ "7", "163" ] ;

Existuje vľavo json všetky kľúče vpravo:

SELECT  *
FROM    table
WHERE   field -> "roles" ?& ARRAY[ "7", "163" ] ;

Zhoduje sa pole json - presne - so správnym poľom json:

SELECT  *
FROM    table
WHERE   field -> "roles" = $$[ "7" ]$$::jsonb ;

Dúfajme, že pomôže :)