Приветствую.
У меня есть фронт, на котором формируется объект в виде json, затем переводится в строку base64, через бэк попадает в PostgreSQL (v. 11) где строка переводится обратно в json и нужно вытянуть из него данные по колонкам.
После преобразования в БД объект json имеет такой вид
"{\"type\":[\"Shop\",\"Task\"],\"tag\":[\"code\",\"soft\",\"analitic\"]}"
и нужно выбрать из него все "type" и "tag".
Попробовал сделать это следующим образом
Код
CREATE OR REPLACE FUNCTION filtering(
filter64base text)
RETURNS
TABLE(type text, tag text)
LANGUAGE 'plpgsql'
COST 100
VOLATILE
ROWS 1000
AS $BODY$
DECLARE
filterString character varying(200) = (SELECT CONVERT_FROM(DECODE($1, 'BASE64'), 'UTF-8'));
isTypes boolean;
isTags boolean;
BEGIN
DROP TABLE IF EXISTS FilterJsonData;
CREATE
TEMP TABLE
FilterJsonData(stringObj json);
INSERT INTO FilterJsonData(stringObj)
VALUES
((SELECT to_json(filterString)));
RETURN QUERY
SELECT
stringObj::json->>'type',
stringObj::json->>'tag'
FROM FilterJsonData;
END;
$BODY$;
Но так получается выборка null по обеим полям, хотя данные то имеются..
Прошу помочь - как выбрать типы и теги ?