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函数。
这感觉像是一个非常基本的问题,我已经四处寻找了大约一个小时,但还没有找到直接的答案。
我有一个小数,它代表一个重量,我希望它四舍五入并以一种被认为正常的方式格式化。
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函数。