在SQL Server 2008 存储过程中拼接字符串时,若存在varchar和数值型则varchar自动转化为数值型

来源:互联网 发布:印度赶超中国 知乎 编辑:程序博客网 时间:2024/06/03 17:21
在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等,字符串类型和数值类型互相转化)