【问题标题】:How to format percentage?如何格式化百分比?
【发布时间】:2019-07-03 08:23:22
【问题描述】:

我在格式化百分比方面需要帮助。我最初格式化的原因是我想将接近零的百分比显示为 0.05% 而不是 0.05%

所以我这样做了:

IF (a.TOTAL <> 0 AND b.mkt <> 0) THEN
    v_perc := TO_CHAR(ROUND(100-( a.TOTAL*100/ b.mkt),2),'00.99') || '%';
END IF;

v_perc 存储为varchar2(50),但格式并不总是符合我的需要。

当百分比低于 10% 时。我得到 08.52 或 00.35%。但我想要一种输出为 0.52%、5.32%、55%、0%、100% 的格式。我尝试使用000.999,但这将给出 000.000%。

【问题讨论】:

    标签: sql oracle plsql percentage sql-query-store


    【解决方案1】:

    你可以使用

    TO_CHAR(&lt;your_value&gt;,'fm990D00','NLS_NUMERIC_CHARACTERS = ''.,''')

    作为您的格式化模型。

    它可以满足您的需求,直到100(100%)。除了百分比,如果你需要更多的数字,比如11,115.54,你可以将第二个参数转换为'fm999G990D00'

    【讨论】:

    • 嗨,还有一个疑问,如果我必须为具有数字数据类型的列显示相同的内容(删除上述公式中附加的 '%' 部分),应该是什么数据类型和公式,我尝试了十进制(5,2)和十进制(5,4)但是当我删除上述解决方案中提到的tochar格式并尝试了各种格式但它没有给出上面的解决方案时,请帮助
    • @karthikadiga 试图解释,据我所知,只要 8.5,您需要 'fm990D00' 转换为 8.50'fm990D0000' 转换为 8.5000。即需要to_char进行转换,否则为8.5
    • @karthikadiga hm 好的,您可以将perc 声明为number(10,2)numberfloat
    猜你喜欢
    • 1970-01-01
    • 2021-06-15
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多