我如何在SELECT查询中将数组的第一个元素附加到自身

时间:2019-04-17 13:11:42

标签: sql postgresql

我正在尝试将本地创建的数组的第一个条目添加到自己的末尾。

SELECT中的string_to_array创建一个通过xpath从xml源提取的数据数组。

我想复制此数组的第一个条目,并将其粘贴到该查询的主体内的结尾处。

SELECT
    xxxd AS id,
    string_to_array( 
        regexp_replace(
            (xpath('//ns:L/text()', donnee::xml, ARRAY[ARRAY['ns', 'z:e:r:t:y']]))::varchar, '[{}]', '', 'gi')::text , ',') 
    AS lat
    ,
INTO test_table FROM source_table

我正在尝试使用array_append(anyarray, anyelement)进行操作,但实际上无法正常工作

2 个答案:

答案 0 :(得分:0)

您很可能需要一个子查询和array_append-例如:

with subquery as (
  select array['a','b','c'] as arr
)
select array_append(arr, arr[1])
  from subquery

得出a,b,c,a

答案 1 :(得分:0)

基于giorgiga的想法,您可以创建一个函数,该函数以所需的方式更新数组,然后使用该函数包装提取的数组。例如:

CREATE FUNCTION arr_extend(arr anyarray) RETURNS anyarray
    AS $$ SELECT array_append(arr, arr[1]) $$ LANGUAGE SQL;

SELECT arr_extend(array['a','b','c']);