SQL:如何格式化小数,包括小于1的小数

时间:2016-11-18 19:50:47

标签: sql sqlanywhere

这感觉就像一个真正的基本问题,我一直在寻找约一个小时,但还没有找到一个直接的答案。

我有一个十进制数字,它代表一个重量,我希望它被舍入并以一种被认为是正常的方式格式化。

1.0000 to 1.00
.1900 to 0.19
-.1900 to -0.19

现在我通过将十进制值转换为四舍五入来消除尾随零

CAST(TLI_Amount as decimal(18,2))

现在是踢球者。我不知道我在哪个版本的SQL,但它一定很旧。足够老,它不会将FORMAT识别为函数。这几乎是每个人都说的用法。那个或者前导零被置于一切之前,但它只需要数字< 1

那我怎么能得到我的小数< 1读作0.xx,就像任何正常的人类可读数字一样。

2 个答案:

答案 0 :(得分:2)

SQL Anywhere确实支持@@version,所以也许这不是你正在做的事情。但如果您是,则可以在str()函数here上查找文档。简而言之:

select str( 1.2345, 4, 2 )
   -> 1.23
select str( 0.1234, 4, 2 )
   -> 0.12
select str( -0.1234, 5, 2 )
   -> -0.12

还有一个round功能。

答案 1 :(得分:1)

那么,如何只添加零。我认为SQLAnywhere使用+进行字符串连接:

SELECT (CASE WHEN TLI_Amount < 1 THEN '0' ELSE 1 END) +
        CAST(CAST(TLI_Amount as decimal(18, 2)) as VARCHAR(255))
       )

注意:这假定TLI_Amount为正。