存储过程中拼接字符串char与varchar的问题
drop procedure sp_bjh_test4(varchar(255));create procedure sp_bjh_test4(p_bjhkmdm varchar(255))
returning varchar(255);
define ls_bmset varchar(255);
let ls_bmset="";
let ls_bmset=replace(p_bjhkmdm,",","','");
let ls_bmset="'"||ls_bmset||"'";
return ls_bmset;
end procedure;
这个存储过程没有问题,但如果将varchar(255)换成char(1400),则返回值的最后没有单引号,请问什么原因,char的位数已经很大了,不会超出的。 注意char和varchar不同的。
char型数据会自动用空格填满不足部分。
如果 ls_bmset 是char(1400)型,则其长度始终是1400,所以"'"||ls_bmset||"'"的长度为1402,当被赋值给ls_bmset那么其最后的一个空格和单引号被舍弃。 哦,好的,非常感谢。 trim一下
页:
[1]