在 Postgres 中,我试图在服务器数据的结果行中包含一个以逗号分隔的链接到特定服务器的 IP 地址列表。
最初我使用了 FILTER 功能,这对我的目的来说似乎很理想
STRING_AGG(ipadd, ',') FILTER ( WHERE ipadd is NULL OR ipadd != '') AS ipaddresses
生成结果行,例如
server1;data;etc; 1.2.3.4;
server2;data;etc; 11.22.33.44, 22.33.44.55;
server3;data;etc;
server3;data;etc; 23.45.67.89
但是,已经发现将在其上运行的服务器使用不支持 FILTER 功能的较低版本的 postgresql。
因此,我需要简化对
STRING_AGG(ipadd, ',') AS ipaddresses
由于从第二个表返回的多行中可能存在空或空条目,因此返回如下内容:
server1;data;etc; ,1.2.3.4,,,;
server2;data;etc; 11.22.33.44,,, 22.33.44.55,,,;
server3;data;etc; ,,,,,,,,,
server3;data;etc; ,,23.45.67.89,,
每个空或空条目都会生成另一个包含正确数据的空字段。
是否有一种 pre-FILTER 方法可以实现与上面的 FILTER 查询相同的结果,或者甚至只是删除没有分隔两个返回的数据的所有逗号实例。
目前我只是在调用后在服务器端解析这些,但如果可能的话,我更愿意在 SQL 端进行解析。