gpt4 book ai didi

perl - 为什么 psql 在此用户定义的函数中向主机名添加 '+' 符号

转载 作者:行者123 更新时间:2023-11-29 14:20:43 25 4
gpt4 key购买 nike

map=# CREATE OR REPLACE FUNCTION hostname()                                                             
RETURNS varchar(128) AS
$BODY$
return `hostname`;
$BODY$
LANGUAGE 'plperlu';
CREATE FUNCTION

map=# select hostname from hostname();
hostname
----------
topiary +


(1 row)

最佳答案

Perl 的反引号包括结尾的换行符,所以当你说:

my $hostname = `hostname`

你在 $hostname 中得到一个尾随换行符. +你在 psql 中看到输出只是 psql指示字段中有换行符的方式。

您可能想要 chomp 函数内部:

CREATE OR REPLACE FUNCTION hostname()                                                             
RETURNS text AS
$BODY$
my $hostname = `hostname`;
chomp($hostname);
return $hostname;
$BODY$
LANGUAGE 'plperlu';

我还将返回类型更改为 text因为不需要包含任意限制,而且您几乎总是想要 text而不是 varchar(n)无论如何使用 PostgreSQL。

您可能想阅读 linestyle \pset 的选项在fine manual .

关于perl - 为什么 psql 在此用户定义的函数中向主机名添加 '+' 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28418295/

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