gpt4 book ai didi

database - PostgreSQL - 将三列合并为一列在 IP 地址末尾添加斜杠符号

转载 作者:行者123 更新时间:2023-11-29 13:32:54 25 4
gpt4 key购买 nike

问题(为了解释我的问题而大大简化):

在 Postgres 中,我试图将一个表中的三列合并到一个 View 中的一列中,但在 ipaddresses 的末尾添加了斜线符号,而我不需要它(注意: 斜线符号不是在我的表中的 IP 地址的末尾开始)。

我在做什么:

在我的表中,我有一个名为“ipaddress”的列,类型为“inet”。

在我的表中,我有一个名为“firstname”的列,类型为“text”。

在我的表中,我有一个名为“age”的列,类型为“integer”。

在 View 中使用以下 sql 语句,我试图将这三列合并为一列:

SELECT (thetablename.ipaddress || thetablename.firstname || thetablename.age) 
AS personal_details
FROM thetablename

这一切都很完美,并将三列合并为一列,但是对于 ipaddresses,它会在其末尾添加斜杠符号,如下所示:

我得到的输出:

-------------------------
personal_details
-------------------------
192.168.0.199/32 Dave 65 <-- as you can see it is adding /32 but i do not want it to
192.168.0.100/32 Paul 56
192.168.0.121/32 Lucy 28

我似乎无法阻止它在 IP 地址末尾添加“/32”斜杠符号。

我已经尝试明确指定类型,但这没有效果:

SELECT (thetablename.ipaddress::inet || thetablename.firstname::text || thetablename.age::integer) 
AS personal_details
FROM thetablename

一定有一些明显的东西我忽略了但无法弄清楚它是什么。

最佳答案

使用host 函数而不是默认的cast formatter。

所以使用:

SELECT (host(thetablename.ipaddress::inet) || thetablename.firstname::text || thetablename.age::integer) 
AS personal_details
FROM thetablename

您拥有的 /32 是默认使用默认格式化程序添加的网络掩码。

inet 类型有几个可用的函数:check this list of functions and results

关于database - PostgreSQL - 将三列合并为一列在 IP 地址末尾添加斜杠符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19634487/

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