Имам тип поле jsonb в таблицата и имам данни по-долу.
{"roles": ["7", "73", "163"]}
Трябва да проверя "73" присъства или не от postgresql.
Вече търся, но единственото дава решение за обект на обект, а не на масив от масив.
Опитах по-долу заявка, но не работи
SELECT *
FROM table
WHERE field->"roles" ? ARRAY ["73"];
--updated--
също ми трябва само този запис, който има точна стойност
{"роли": ["7"]}
{"role": ["7", "73", "163"]}
т.е. полето има само "7", а не нещо друго в него.
Отговори:
1 за отговор № 1По документацията https://www.postgresql.org/docs/current/static/functions-json.html#FUNCTIONS-JSONB-OP-TABLE за всички ваши случаи:
Съществува ли ключ –single в масива json:
SELECT *
FROM table
WHERE field -> "roles" ? "73";
Съществува ли -any- от ключовете отдясно в json масив:
SELECT *
FROM table
WHERE field -> "roles" ?| ARRAY[ "7", "163" ] ;
Има ли -ал- клавишите вдясно в левия json масив:
SELECT *
FROM table
WHERE field -> "roles" ?& ARRAY[ "7", "163" ] ;
Съвпада ли левият json масив-точно - с десния json масив:
SELECT *
FROM table
WHERE field -> "roles" = $$[ "7" ]$$::jsonb ;
Дано помогне :)