![](/img/trans.png)
[英]Error : Arithmetic overflow error converting numeric to data type 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.