一、SQL Server拼接字符串执行语句,错误提示: 转换成数据类型 int 时失败。
案例
declare @pointID int
set @pointID = 10001
select 'INSERT into table1(pointID) VALUES ('+@PointID+');'
错误:
将 varchar 值 ‘INSERT into table1(pointID) VALUES (’ 转换成数据类型 int 时失败。
解决方案:
将int转换为char类型就可以
declare @PointID int
set @PointID = 10001
select 'INSERT into table1(pointID) VALUES ('+rtrim(ltrim(Str(@PointID)))+');'
-- 或者 select 'INSERT into table1(pointID) VALUES ('+CONVERT(char(10),@PointID)+');'
declare @sql nvarchar(1000),@tempScore decimal(18,2);
set @sql=N'select @tempScore=sum(num'+rtrim(ltrim(str(@dataid)))+') from DataNum where zdposition like '''+@zdposition+'_%'' and CreateTime>= '''++@start++''' and CreateTime<= '''+@end+'''';
--print @sql;
exec sp_executesql @sql,N'@tempScore decimal(18,2) output', @tempScore output;
在定义字符串类型的时候使用 nvarchar(x) 和 N符号。
更多: