关于SQLServer中“%”问题

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

原文地址:https://www.cnblogs.com/birdGe/p/13353988.html