其实我想知道如果数字是0.75然后将其视为值,如果数字是75.00,则将其视为百分比,如果数字是12.25,则将其视为值
答案 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)