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

SQL: How to format decimals, including ones less than 1

这感觉像是一个非常基本的问题,我已经四处寻找了大约一个小时,但还没有找到直接的答案。

我有一个小数,它代表一个重量,我希望它四舍五入并以一种被认为正常的方式格式化。

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,就像任何正常的人类可读数字一样。

那么,只添加零怎么样。我认为 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 为正数。

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函数。