#json #psql
Вопрос:
Я хочу выбрать каждую строку, в которой есть args.args_json.actions ==> любой идентификатор до 79
{
"args": {
"args_json": {
"actions": [
{
"id": 79
},
{
"id": 47
},
{
"id": 82
}
]
}
}
}
Я попробовал args #> '{args_json,actions,0}' ->> 'id' = '79'
, и это работает, но только для проверки индекса 0.
Я хотел бы того же, но возвращает true, если какой-либо идентификатор равен 79, а не только индекс 0.
Ответ №1:
Нет необходимости разыменовывать, вы можете просто использовать оператор сдерживания @>
с большим JSON:
WHERE args @> '{ "args_json": { "actions": [ { "id":79 } ] } }'
Ответ №2:
аргументы #> ‘{args_json,действия}’ @>> ‘[{«идентификатор»:79}]’ ;