Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将函数中的二维数组作为行和列输出_Sql_Postgresql_Plpgsql - Fatal编程技术网

Sql 将函数中的二维数组作为行和列输出

Sql 将函数中的二维数组作为行和列输出,sql,postgresql,plpgsql,Sql,Postgresql,Plpgsql,我在做一个函数,在这里我创建了一个二维数组,沿着 {{1, 'John', 'Smith'}, {1, 'Jane', 'Doe'}, {3, 'Tony', 'Stark'}} 我正在构建的函数将来自几个不同查询的数据组合在一起,尽管它似乎不必要,但这似乎是迄今为止我组合数据的唯一方法 我遇到的问题是将数组显示为表 我这样调用我的函数: SELECT * FROM my_func(); ^^并从上面获取数组输出^^ 我希望能够返回这样的内容:-如果我可以标记列,那就更好了 Col1 |

我在做一个函数,在这里我创建了一个二维数组,沿着

{{1, 'John', 'Smith'}, {1, 'Jane', 'Doe'}, {3, 'Tony', 'Stark'}}
我正在构建的函数将来自几个不同查询的数据组合在一起,尽管它似乎不必要,但这似乎是迄今为止我组合数据的唯一方法

我遇到的问题是将数组显示为表

我这样调用我的函数:

SELECT * FROM my_func();
^^并从上面获取数组输出^^

我希望能够返回这样的内容:-如果我可以标记列,那就更好了

Col1   | Col2   | Col3
1      | John   | Smith
2      | Jane   | Doe
3      | Tony   | Stark
我试过:
SELECT*FROM my_func()哪一个更好,但仍然无法使用,因为它将所有内容都放在一个列中

Col1
1
John
Smith
2
Jane
Doe
3
Tony
Stark

问题中缺少信息,因此假设您希望返回三列
(int、text、text)
。同时假设目前的博士后成绩为9.5

纯SQL 在
横向连接中使用:

WITH t(a) AS (
   SELECT '{{1, John, Smith}, {1, Jane, Doe}, {3, Tony, Stark}}'::text[]
   )
SELECT t.a[i][1]::int AS col1, t.a[i][2] AS col2, t.a[i][3] AS col3
FROM t, generate_subscripts(t.a, 1) i;
相关的:

PL/pgSQL 循环使用:

电话:

相关的:


每个返回:

 col1 | col2 | col3
------+------+-------
    1 | John | Smith
    1 | Jane | Doe
    3 | Tony | Stark
WITH t(a) AS (
   SELECT '{{1, John, Smith}, {1, Jane, Doe}, {3, Tony, Stark}}'::text[]
   )
SELECT f.*
FROM   t, my_func(t.a) f;
 col1 | col2 | col3
------+------+-------
    1 | John | Smith
    1 | Jane | Doe
    3 | Tony | Stark