当前位置: 代码迷 >> SQL >> 在SQL Server 存储过程中拼凑字符串时,若存在varchar和数值型则varchar自动转化为数值型
  详细解决方案

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

热度:128   发布时间:2016-05-05 09:48:38.0
在SQL Server 存储过程中拼接字符串时,若存在varchar和数值型则varchar自动转化为数值型

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


问题:
[email protected]_var代表一个数值类型的变量,是传递进来的参数)
在SQL Server2008的存储过程中形如set @sql='select * from test where [email protected]_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等,字符串类型和数值类型互相转化)

?

?

转载地址:http://blog.csdn.net/ylchou/article/details/7676112

  相关解决方案