将数字长度最小化为固定长度

时间:2015-01-22 12:48:32

标签: sql sql-server tsql

我需要将数字长度最小化为小数点1的固定值3

例: 经过@ a = 45689.45的计算值。

现在我需要获得@a = 45.6的值 如果该值小于100,即如果它是89.63,则我不需要更改它。

@a的最后一个值应为(3,1)

的十进制数

3 个答案:

答案 0 :(得分:1)

怎么样:

case when @a >= 100 then
    round(@a / power(10, floor(log10(@a)) - 1), 1, 1)
else @a
end

答案 1 :(得分:0)

试试这个

DECLARE @a DECIMAL(7, 2)=45689.45

SELECT CASE
         WHEN len(CONVERT(INT, @a)) > 3 THEN LEFT(@a / CONVERT(INT, '1' + replicate(0, len(CONVERT(INT, @a))-2)), 4)
         ELSE @a
       END 

答案 2 :(得分:0)

我还没有对此进行过测试,但没有使用字符串操作,这可能会起到作用;

declare @i decimal(18, 6); set @i = 2000

select cast(round(@i / case when @i >= 100 then (power(10, floor(log10(@i)) - 1)) else 1.0 end, 1) as decimal(3,1)

手指交叉:)

里斯