您好我是psql的新手,我有一个问题,我在函数中有一个VARCHAR变量,我想在它之前和之后添加空格。像这样:
CREATE FUNCTION func(word VARCHAR)
RETURNS VARCHAR
AS
$word2$
DECLARE
word VARCHAR;
word2 VARCHAR;
BEGIN
word2 = ' ' word ' ' ;
RETURN word2;
END;
$word2$
LANGUAGE plpgsql ;
有快速简便的方法吗? 感谢。
答案 0 :(得分:0)
你声明:
word VARCHAR;
然而你有同名的IN参数:
CREATE FUNCTION func(word VARCHAR)
会发生什么:函数忽略参数字,因为你重新声明了它。来自docs:
如果未给出DEFAULT子句,则将变量初始化为 SQL null值
:= 'come value'
之后您没有word VARCHAR
,因此它变为空。
另一方面,连接运算符||
不会将NULL
视为concat()
函数,因此' ' word ' '
的结果始终为NULL
,无论如何
以下是工作职能的例子:
t=# CREATE OR REPLACE FUNCTION func(word VARCHAR)
RETURNS VARCHAR
AS
$word2$
BEGIN
RETURN ' '||word||' ';
END;
$word2$
LANGUAGE plpgsql ;
CREATE FUNCTION
Time: 13.018 ms
t=# select func('text');
func
--------
text
(1 row)
Time: 0.260 ms