如何从postgresql中的变量创建数组?

问题描述 投票:0回答:1

我想从两个变量 p、q 创建一个数组。 这是我的尝试:

DO
  $code$
    DECLARE
      p text := 'Hello';
      q text := 'world!';
      ta text[];             --text array
    BEGIN
      ta := {p, q};
      RAISE INFO '% %', ta[1], ta[2];
    END
  $code$;

但是不起作用

postgres=# DO
postgres-#   $code$
postgres$#     DECLARE
postgres$#       p text := 'Hello';
postgres$#       q text := 'world!';
postgres$#       ta text[];             --text array
postgres$#     BEGIN
postgres$#       ta := {p, q};
postgres$#       RAISE INFO '% %', ta[1], ta[2];
postgres$#     END
postgres$#   $code$;
ERROR:  syntax error at or near "{"
LINE 8:       ta := {p, q};
                    ^

我能得到的最好的,有效的是:

DO
  $code$
    DECLARE
      p text := 'Hello';
      q text := 'world!';
      ta text[];             --text array
    BEGIN
      RAISE INFO 'p=[%] q=[%]', p, q;
      ta := array_append(array_append(ta, p), q);
      RAISE INFO '% %', ta[1], ta[2];
    END
  $code$;

我应该如何在 pl/pgsql 中执行此操作?

arrays postgresql plpgsql
1个回答
0
投票

只要

p
q
具有相同的类型,这就是您问题中的情况:
ARRAY[p, q]
是在 postgres 中创建数组的方式。

您的整个更正代码:

DO
  $code$
    DECLARE
      p text := 'Hello';
      q text := 'world!';
      ta text[];             --text array
    BEGIN
      ta := ARRAY[p, q];
      RAISE INFO '% %', ta[1], ta[2];
    END
  $code$;
© www.soinside.com 2019 - 2024. All rights reserved.