【发布时间】:2019-04-19 11:59:10
【问题描述】:
我需要将不是从索引 1 开始的 text[] 数组转换为 json,并保留其索引。
例如,我有一个从索引 5 开始的 text[] 数组:
select myarr from tbl;
myarr
-------------------
[5:5]={blablabla}
如果我使用array_to_json() 函数,我会得到:
select array_to_json(myarr) from tbl;
array_to_json
---------------
["blablabla"]
有关数组索引的信息已丢失。但我需要它。
我需要在正确的视图中获取它(对于 json),即:
[null, null, null, null, "blablabla"]
PS,我将给定的解决方案包装在一个函数中:
CREATE OR REPLACE FUNCTION array_to_json_with_null(myarr text[])
RETURNS json AS
$func$
BEGIN
if myarr is null or cardinality(myarr) = 0 then
return null;
else
return array_to_json (array_fill(null::text,
ARRAY[array_lower(myarr, 1) - 1], ARRAY[1]) || myarr);
end if;
END
$func$ LANGUAGE plpgsql;
【问题讨论】:
标签: arrays json postgresql