在SQL语句中使用ABS和十进制算术

时间:2013-03-26 04:33:16

标签: sql decimal

我有一行类型为float,可以从0到1.我想用最接近0.5的结果来命令我的结果。所以我试过了:

SELECT * FROM a ORDER BY ABS(a.value - 0.5) desc

但它不起作用。它只是返回0,然后是1,然后是0(它似乎是随机的)。有什么想法吗?

表a有一行名为value,例如:

A value = 1
B value = 0
C value = 0.5
D value = 0.3

我希望它按此顺序返回:

C (ABS(value - 0.5) = 0)
D (ABS(value - 0.5) = 0.2)
A (ABS(value - 0.5) = 0.5)
B (ABS(value - 0.5) = 0.5)

1 个答案:

答案 0 :(得分:1)

    select abs((a.value-0.5)) as x from a order by x asc;
    x
    ----------
    0.0
    0.2
    0.5
    0.5

这假设值的类型是float而不是整数,我测试了float,但不是整数。