如何检查小数点后的100.00数字是否大于0?

时间:2015-05-04 07:44:04

标签: sql sql-server-2012

其实我想知道如果数字是0.75然后将其视为值,如果数字是75.00,则将其视为百分比,如果数字是12.25,则将其视为值

2 个答案:

答案 0 :(得分:1)

除以1时的模数将除去整个部分并仅留下小数余数。尝试以下:

   SELECT CASE (100.00 % 1) WHEN 0 THEN 'Percent' ELSE 'Value' END
   SELECT CASE (0.75 % 1) WHEN 0 THEN 'Percent' ELSE 'Value' END

答案 1 :(得分:0)

一种方法是转换为整数并查看原始值是否匹配。你的问题不清楚你想要的输出,但也许:

select (case when value between 0 and 1 then 'value'
             when cast(value as int) = value then 'percentage'
             else 'value'
        end)

注意:由于使用浮点表示的不准确性,这可能并不完美。它应该适用于十进制表示。另请注意,12.00001被视为值而不是百分比。在这种情况下,你的问题很清楚。大多数浮点表示都精确地存储低值整数,因此这将适用于完全匹配。

如果您只关心前两位小数,则可以使用str()函数或双重转换。例如,对于正值:

select (case when value between 0 and 1 then 'value'
             when right(str(value - floor(value as int), 10, 2), 2) = '00' then 'percentage'
             else 'value'
        end)