PG12处理Quill Editor生成的JSON时如何移除内容内换行符实现单行输出
问题原因
你之前的替换逻辑不生效,是因为PostgreSQL中普通单引号包裹的'\n'会被识别为「反斜杠+字母n」两个独立字符,而非实际的换行符,需要使用转义字符串语法E'\n'才能匹配真实的换行符。
修改后完整函数
CREATE OR REPLACE FUNCTION public.fun( j json) RETURNS text LANGUAGE 'plpgsql' immutable AS $BODY$ begin return string_agg(replace(obj->>'insert', E'\n', '') || ' ', '') FROM json_array_elements(j->'ops') obj; end; $BODY$;
测试验证
执行你提供的测试语句:select * from fun('{"ops":[{"insert":"1st line\n."},{"insert":"2nd line."},{"insert":"333"}]}')
返回结果为1st line. 2nd line. 333,符合需求。
可选优化
如果需要去除最终结果首尾多余的空格,可以在外层加trim()函数:
return trim(string_agg(replace(obj->>'insert', E'\n', '') || ' ', ''));
内容的提问来源于stack exchange,提问作者Jeb50
相关产品推荐
相关产品推荐

