存储过程中的字符串拼接问题

ALTERproc[dbo].[fun_query_pm]@ii_pm_namechar(20)asdeclare@wherechar(20);set@where='mi... ALTER proc [dbo].[fun_query_pm]
@ii_pm_name char(20)
as
declare @where char(20);
set @where = 'misaka';
set @where= @where + @ii_pm_name
print @where;

输出where是misaka,就是说后面的@ii_pm_name根本没拼上

将 set @where= @where + @ii_pm_name 换成 set @where= @where + '123'
依然拼不上,求解
额 第六行少复制了一个分号,请各位忽略它,不是分号的原因
展开
 我来答
请叫我召哥
2012-12-20 · TA获得超过792个赞
知道小有建树答主
回答量:572
采纳率:95%
帮助的人:388万
展开全部
alter proc [dbo].[fun_query_pm]
@ii_pm_name varchar(20)
as
begin
declare @where varchar(20)
begin
set @where = 'missaka'
set @where = @where + @ii_pm_name
print @where
print @ii_pm_name
end
end
exec p_test '10011'

你把char换成varchar就可以显示了,这主要是char是固定长度,当set @where='misaka'时,
实际上@where中的字节段已经填满,后面空的被空格字符填满,所以当你再进行连接的时候就没位置连了,
当然不能连接了。用varchar就不会了
百度网友cb9ca12
2012-12-20 · TA获得超过109个赞
知道答主
回答量:60
采纳率:0%
帮助的人:48.2万
展开全部
你是不是执行的时候没带参数?这样写试试:
ALTER proc [dbo].[fun_query_pm]
@ii_pm_name char(20)
as
BEGIN
declare @where char(20)
set @where = 'misaka'
set @where= @where + @ii_pm_name
print @where
END
执行:EXEC [dbo].[fun_query_pm] 'abcde'
看输出结果是不是misakaabcde
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
想住村儿里
2012-12-20
知道答主
回答量:22
采纳率:0%
帮助的人:18.5万
展开全部
set @where= @where || @ii_pm_name

这个可以不?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Luoqianfeng
2012-12-20 · TA获得超过115个赞
知道小有建树答主
回答量:586
采纳率:0%
帮助的人:276万
展开全部
直接打印ii_pm_name
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式