没必要转来转去的啊,int的优先级比varchar的高做+运算时类型会发生隐式转化,由低向高也就是select '12'+1 的结果是13,没必要显示转换
set @hao=cast(@hao as varchar(100))你这个都已经定义成varchar了,使用过程中不需要转换的。 你把convert这些去掉,会出错吗?