请问各位高手这种问题该如何解决?
code=SQL]Price=(case when HasSpRight(@rightCode,@UserID) = 1 then a.price
else '0.0000000' end)[[/code]
就这句输出的结果总为6位 实际上位7位,其他地方未定义长短,另外如果我在新增一列比如xx=a.price 出来结果也正确为7位,并且我修改为code=SQL]Price=(case when HasSpRight(@rightCode,@UserID) = 1 then convert(numeric(20,7),a.price) else '0.0000000' end)[[/code]也不正确
但是如果该为code=SQL]Price=(case when HasSpRight(@rightCode,@UserID) = 1 then convert(varchar(15),a.price) else '0.0000000' end)[[/code]
得出的结果也正确
然后我右键点击存储过程查看属性,里面有个参数显示,那一列的存储过程为 内置类型, 请问这种情况该如何解决,先谢谢各位。
------解决方案--------------------------------------------------------
帮顶,发到SQL 版那里高手多!!
------解决方案--------------------------------------------------------
看了下你的情况
“case when HasSpRight(@rightCode,@UserID) = 1 then a.price
else '0.0000000' end”
注意,case这里面新生成的列,会进行数据类型隐性转换的,估计你的情况就是隐性转换的过程中把数据的精度调整了,因为不是很清楚sybase下的数据类型的情况,建议你看下sybase下的数据类型,根据你的数据的情况,取合理的数据类型或自己进行显性转换吧