在SQL Server 2008 存储过程中拼接字符串时,若存在varchar和数值型则varchar自动转化为数值型
问题:
(下面@tinyint_var代表一个数值类型的变量,是传递进来的参数)
在SQL Server2008的存储过程中形如set @sql='select * from test where age='+@tinyint_var+'order by sex';
会报varchar 'select * from test where age='转化为数值类型(tinyint或int等,上面的SQL语句只是示意)出错。
解决思路:
把数值1转成varchar类型即可,使用cast(@tinyint_var as varchar)即可(注意不是varchar(xx))
解决后语句:
set @sql='select * from test where age='+cast(@tinyint_var as varchar)+'order by sex';
总结:
在SQL Server 2008 存储过程中拼接字符串时,若存在varchar和数值型则varchar自动转化为数值型。需要使用cast()函数来进行不同类型间的转化(varchar、int、tinyint等,字符串类型和数值类型互相转化)