gpt4 book ai didi

java - 在所有列上解析 Array_agg

转载 作者:行者123 更新时间:2023-11-30 06:02:45 25 4
gpt4 key购买 nike

我在带有 Java-8 的 Ubuntu 10.6-1.pgdg18.04+1 上使用 PostgreSQL 10.6。我有两个表:

表格测试

 Column |         Type         | 
--------+----------------------+
id | character varying(5) |

表测试2

 Column |         Type          | 
--------+-----------------------+---
c1 | character varying(5) |
c2 | character varying(10) |
c3 | character varying(10) |
c4 | character varying(10) |

我正在尝试通过JOIN 一次从两个表中获取结果。

这是我的查询

SELECT t1.*, Array_agg(t2.*) AS ent
FROM test AS t1 LEFT JOIN
test2 AS t2
ON t1.id = t2.c1 GROUP BY t1.id;

给出结果

 id |            ent            
----+---------------------------
a | {"(a,e,f,g)","(a,b,c,d)"}

获取值ent列后

Array arr = rs.getArray("ent");

Object objects = arr.getArray();

对象包含

objects = ["(a,e,f,g)","(a,b,c,d)"]

现在如何解析结果并将值作为单独的值,因为它是对象类型?

将其转换为 ResultSet[] 会得到 cannot be cast to [Ljava.sql.ResultSet

最佳答案

据我从您的问题中可以看出,getArray 方法返回字符串的Array。您可以将结果转换为字符串数组,而不是将 Array 转换为 Object

转换示例代码:

String[] arr = (String[])rs.getArray("ent");

一旦你有了一个字符串数组,你就可以使用字符串函数来解析和提取值。例如,如果在您的示例输入上执行以下代码:

String[] arr = (String[])rs.getArray("ent");
for(String row : arr) {
String[] letters = row.replace("(","").replace(")","").split(",");
for(String letter : letters) {
System.out.println(letter);
}
}

应打印以下结果:

a
e
f
g
a
b
c
d

关于java - 在所有列上解析 Array_agg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53804681/

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