У меня есть вложенный столбец jsonb, и я пытаюсь запросить поле в jsonb, КАК значение или точное значение, используя Postgres9.6
Таблица: test
Столбец Jsonb: данные
{
"subject":[
{
"test1": "blue",
"test2": "12",
"test3": "green"
},
{
"test1": "red",
"test2": "1234",
"test3": "green"
}
]}
Я пробовал это:
SELECT * from test where data ->'subject'->>'test2' like '%12%';
Также пробовал запрос на сдерживание:
SELECT '{"test":{test1: "blue"}}' :: jsonb@> '{"test":{}}'::jsonb
Наконец, попытался получить доступ к элементам jsonbно получить столбец "1234" не существует ошибка.
SELECT * FROM test
WHERE EXISTS (SELECT FROM jsonb_array_elements(test.data -> 'subject') as s
WHERE (s->'test2'= "1234"));
Первый запуск, но я не получаю данных обратно.
Функция, которая ошибки
CREATE FUNCTION search_data (search text)
RETURNS setof test AS $$
SELECT *
FROM test t, jsonb_array_elements(t.data->'subject') e
WHERE e.value->>'test2' like '%search%';
$$ language sql stable;