declare @iqtty float set @iqtty =0.0034 select @iqtty *1000 %10
会报出这样的错误
数据类型 float 和 int 在 modulo 运算符中不兼容。
在网上找到了原因
Transact-SQL 语法约定
语法
dividend % divisor
参数
dividend
要执行除法运算的数值表达式。dividend 必须为整数和货币数据类型类别中任意一种数据类型的有效表达式,或者为 numeric 数据类型。
divisor
要除被除数的数值表达式。divisor 必须为整数和货币数据类型类别中任意一种数据类型或者 numeric 数据类型的任何有效表达式。
所以正确的应该是
declare @iqtty float set @iqtty =0.0034 select Convert(numeric(18,5),(@iqtty *1000)) %10
相关:http://www.itpub.net/thread-1932871-1-1.html