Как выполнить цикл через массив, содержащийся в поле jsonb
внутри функции PLPGSQL в Postgres 9.6?Как пропустить массив, содержащийся в поле JSONb?
Это мое поле заявление:
CREATE TABLE afact_rule(
...
expressions jsonb,
...
)
И это мой ФУНКЦИЯ:
FOR expression IN SELECT * FROM json_array_elements(rule.expressions) LOOP
CASE expression.field
WHEN 'task_id' THEN
... whatever ...
END CASE;
END LOOP;
И это ошибка я получаю при его использовании:
LINE 1: SELECT * FROM json_array_elements(rule.expressions) ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. QUERY: SELECT * FROM json_array_elements(rule.expressions)
Каков наилучший (и эффективный) подход к циклу через массив con в поле jsonb
?
Содержание rule.expressions
является:
[{"field": "dep_id", "value": 1, "operator_code": 1},
{"field": "title", "value": "customer", "operator_code": 2}]
'выбрать * из "правил", г json_array_elements (r.expressions)' –
@a_horse_with_no_name, неа, не работает либо. Я думаю, что ошибка означает, что нет такой функции, которая принимает аргумент 'jsonb' в Postgres. Итак, должна быть какая-то другая функция для 'jsonb' – Nulik
Ах, не видел' jsonB'. Для этого вам нужно использовать 'jsonB_array_length', конечно, –