问题描述
看看这个快照:
有人可以向我解释发生了什么吗?
create or replace function primera_majuscula(str name) returns name as $$
begin
return upper(substring(str from 1 for 1)) || lower(substring(str from 2));
end;
$$ language plpgsql;
它接收一个名称类型的参数,并返回一个名称类型的值。它的名字是“primera_majuscula()”,意思是“first_capital_letter()”,它返回输入参数的第一个字母大写,其他字母小写。这样做的方法是使用 substring 函数,将大写的第一个字母与降低的其他字母连接起来。
此外,正如您在快照中看到的那样,如果我直接在提示上询问函数的主体,它就可以正常工作。但在我要求该功能的情况下并非如此。
有人能解释一下吗?真的是BUG吗?
我尝试重新启动服务器,因为它没有在开发安装中犯错误。只是在生产中。但没什么。
添加文本
这个问题与发表在
The lower() function on international characters。
当然,我的开发服务器(没有出现问题)和生产服务器(出现问题的地方)之间的 Collate 和 Ctype 是不同的。
在开发服务器中,我有这个:
这可以解释不同的行为。
所以,接下来我只会专注于制作:
与 user2728690 发布的问题相反,我的工作正常:
总之,我终于把函数中用到的类型改了。我放的是文字而不是名字。
create or replace function primera_majuscula(str text) returns text as $$
begin
return upper(substring(str from 1 for 1)) || lower(substring(str from 2));
end;
$$ language plpgsql;
它奏效了。
老实说,我没有时间重新安装集群。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)