【发布时间】:2023-03-26 02:42:01
【问题描述】:
Postgres 12,列包含来自 Quill 编辑器的 sample json,例如:
{
"ops":
[
{
"insert": "Text 1"
},
{
"insert": {"video":"..."}
},
{
"insert": "Text 2"
},
{
"insert": {"image":"data:image/jpeg;base64,..."}
}]
}
要获得Text 1 Text 2 的结果,意味着过滤掉(忽略/跳过)所有"insert": {"video":"..."} 和"insert": {"image":"..."}(如果出现)。
检查::json ?| array['video', 'image'] 或删除::jsonb-'video' 之类的操作员似乎很有帮助,但 pg 不做单行 if-then-else (condition)?true_value:false_value。如何在这个函数中使用它们?
CREATE OR REPLACE FUNCTION public.fun(
j json)
RETURNS text
LANGUAGE 'plpgsql' immutable
AS $BODY$
begin
return string_agg((obj->>'insert') || ' ', '')
FROM json_array_elements(j->'ops') obj;
end;
$BODY$;
【问题讨论】:
标签: json postgresql