简体   繁体   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)

Here 这里

The Error converting data type varchar to numeric. 将数据类型varchar转换为数字时出错。

Don't pass values into dynamic SQL as strings. 不要将值作为字符串传递到动态SQL中。 Instead, learn to use sp_executesql : 相反,学习使用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)+''

Try it like this: 像这样尝试:

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

Since your variable is a decimal, you have to cast it as varchar in order to combine it with your string. 由于您的变量是小数,因此必须将其强制转换为varchar才能将其与字符串结合使用。

SQL Server's implicit conversion rules makes it attempt to implicitly convert your varchar to decimal . SQL Server的隐式转换规则使其尝试将varchar隐式转换为decimal You need to explicitly convert the decimal to varchar : 您需要将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.

相关问题 错误:将数字转换为数据类型varchar的算术溢出错误 - Error : Arithmetic overflow error converting numeric to data type varchar 算术溢出错误将varchar转换为数据类型numeric -error - Arithmetic overflow error converting varchar to data type numeric -error 错误:将varchar转换为数值类型的算术溢出错误 - Error: Arithmetic overflow error converting varchar to data type numeric 在存储过程中将varchar转换为数值类型的算术溢出错误 - Arithmetic overflow error converting varchar to data type numeric in stored procedure 将varchar转换为数值类型的算术溢出错误 - Arithmetic overflow error converting varchar to data type numeric 将 varchar 转换为数据类型 numeric CASE 语句的算术溢出错误 - Arithmetic overflow error converting varchar to data type numeric CASE statement 将 varchar 转换为数据类型 numeric 的算术溢出错误 - Arithmetic overflow error converting varchar to data type numeric 将数字转换为数据类型varchar的算术溢出错误 - Arithmetic overflow error converting numeric to data type varchar 在SQL Server中将varchar转换为数据类型数值的算术溢出错误 - Arithmatic overflow error converting varchar to data type numeric in sql server 将varchar转换为数值类型-VBA的算术溢出错误 - Arithmetic overflow error converting varchar to data type numeric -VBA
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM