繁体   English   中英

将数据类型varchar转换为数字并溢出时出错

[英]Error converting data type varchar to numeric and overflow

declare @Commission decimal(18,2)
select @Commission=percentage from Commission
declare @qry varchar(Max)

set @qry='select 5 +'+@Commission +''

EXEC(@qry)

这里

将数据类型varchar转换为数字时出错。

不要将值作为字符串传递到动态SQL中。 相反,学习使用sp_executesql

declare @Commission decimal(18, 2);

select @Commission = percentage
from Commission;

declare @qry varchar(Max);

set @qry='select 5 + @Commission';

exec sp_executesql @qry, 'N@Commission decimal(18, 2)', @Commission=@Commission;
set @qry='select 5 +'+convert(nvarchar(max),@FranchiseeCommission)+''

像这样尝试:

SET @qry='select 5 +'+CAST(@FranchiseeCommission AS varchar(30))+''

由于您的变量是小数,因此必须将其强制转换为varchar才能将其与字符串结合使用。

SQL Server的隐式转换规则使其尝试将varchar隐式转换为decimal 您需要将decimal明确转换为varchar

set @qry='select 5 +'+ CAST(@FranchiseeCommission as varchar(20))

如果2012+,总会有concat()

set @qry=concat('select 5 +',@Commission)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM