gpt4 book ai didi

database - 在 SQL 中以精美打印的格式选择数组

转载 作者:搜寻专家 更新时间:2023-10-30 21:53:17 26 4
gpt4 key购买 nike

我正在尝试选择一个二维整数数组,并将输出定向到一个文件。有什么方法可以编写一个 postgresql 语句,使 select 语句的输出格式很好。正如在作为二维数组元素的每个整数数组中一样,它在其自己的行中。

现在我只得到这个输出:

SELECT array FROM table LIMIT 1;
{{0,0,0},{1,1,1},{2,2,2},{3,3,3},{0,0,0},{1,1,1},{2,2,2},{3,3,3}
,{0,0,0},{1,1,1},{2,2,2},{3,3,3},{0,0,0},{1,1,1},{2,2,2},{3,3,3}
,{0,0,0},{1,1,1},{2,2,2},{3,3,3},{0,0,0},{1,1,1},{2,2,2},{3,3,3}}

我想得到更多这样的东西:

{0,0,0}
{1,1,1}
{2,2,2}
...

我可以在查询返回并进行一些解析后执行此操作,但如果可以在 Postgres 本身中执行,那将是理想的。

最佳答案

有几种方法。一种方法是将数组转换为文本并将其拆分为 regexp_split_to_table() .
此函数存在于 PostgreSQL 8.3 或更高版本 中。

SELECT regexp_split_to_table(trim(my_2d_intarr::text, '{}'), '},{');

输出:

0,0,0
1,1,1
2,2,2

如果你想要封闭的括号(也许你不需要?),像这样把它们加回去:

SELECT '{' || regexp_split_to_table(trim(my_2d_intarr::text, '{}'), '},{') || '}';

输出:

{0,0,0}
{1,1,1}
{2,2,2}

替代方案:

这应该也适用于 PostgreSQL 8.2 或什至更早的版本,但我没有测试过。

SELECT my_2d_int_arr_var[x:x][1:3]
FROM (SELECT generate_series(1, array_upper(my_2d_intarr, 1), 1)::int4 AS x)) x

输出:

{{0,0,0}}
{{1,1,1}}
{{2,2,2}}

(你可能想去掉一些大括号..)

否则,我会编写一个遍历数组的 plpgsql 函数。相当容易。

还有相关的unnest()函数,但它为每个基本元素(在本例中为整数)返回一行,因此在这里没有用。

一种(快速!)输出结果的方式:COPY .

关于database - 在 SQL 中以精美打印的格式选择数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7604169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com