【问题标题】:Oracle TO_CHAR Format Mask for displaying both integral numbers and floating point numbersOracle TO_CHAR 格式掩码,用于显示整数和浮点数
【发布时间】:2014-03-01 13:49:46
【问题描述】:

我正在尝试找到正确的 Oracle 格式掩码,以便以某种方式在报告的 Apex 页面上显示数字。 大多数时候这些数字是整数,但有时这些数字可以是浮点数。 假设我有以下三个查询:

查询 1

SELECT TO_CHAR(1, '<Format Mask>', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

查询 2

SELECT TO_CHAR(0.1, '<Format Mask>', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

查询 3

SELECT TO_CHAR(0.01, '<Format Mask>', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

现在我想使用一个格式掩码,它会给我以下结果:

结果 1

1

结果 2

0,1

结果 3

0,01

谁能为我提供正确的格式掩码来实现这一点? 我尝试过像 FM990D999 这样的格式掩码,但它在查询 1 中的 1 后面留下一个逗号。

【问题讨论】:

  • @Ben 是的,问题非常相似,我还没有找到那个问题。但是,给出的答案对我的情况不是很满意,因为我只能在 Apex 中指定格式掩码。否则我将不得不在早期阶段生成字符串,这会破坏 Apex 报告中的排序行为。
  • @BartvanderDrift - 你不能trim 用你的格式掩码得到的字符串?
  • 这些数字是在报告的同一列中,还是在不同的列中?这是经典报告还是交互式报告?
  • @Alex - 唉,我不能。 Apex 只允许我指定格式掩码。任何额外的字符串操作都必须在 Query 阶段进行,从而破坏报告的排序行为。

标签: sql oracle oracle-apex number-formatting


【解决方案1】:

有一些方法可以更改查询中的列值,同时仍保留报告中的(某些)功能。但是,如果有多个此类列和多个报告,您可能会发现有很多开销而收效甚微。
看看 OTN 论坛上的这个帖子:order by date in IR
问题大致相同:列中的数据表示日期,但实际上不是日期。这篇文章包含在 apex 从 4.2 开始,您有一个更好的选项,称为 HTML 表达式。
同样,从 OTN 链接:Re: Report formatting/sorting issue

引用自链接帖子,用户 fac586

在查询中同时包含variance和abs(variance):

SELECT
        region,
        estimate,
        actual,
        (estimate - actual) AS variance,
        ABS(estimate - actual) AS abs_variance,
        (CASE 
          WHEN (estimate - actual)>=0 THEN 'green'
          WHEN (estimate - actual)<0 THEN 'red'
          ELSE NULL
        END) AS variance_color
from
        expenses

“方差”列的 HTML 表达式为:

<span style="color: #VARIANCE_COLOR#; font-weight: bold;">#ABS_VARIANCE#</span>

隐藏#VARIANCE_COLOR# 和#ABS_VARIANCE# 列。

#ABS_VARIANCE#是列中显示的值,但排序是 使用原始方差值在底层 SQL 中执行。

这很像 Alex 的建议,但需要做更多的工作:在源代码中格式化、添加 html 表达式、隐藏另一列。
我想这取决于你想开多远。为什么不通过其属性将格式应用于列?
另请注意,可以在这些字段中使用字符串替换语法。您可以有几个包含格式掩码的应用程序项,然后在格式掩码字段中引用正确的掩码。 例如: 应用程序项AI_FORMAT_MASK1 具有值FM9990D00。
在格式掩码字段中,您可以使用&amp;AI_FORMAT_MASK1.

【讨论】:

  • Tom,我喜欢您使用两个不同列的解决方案。我要试试这个。无论如何,我都在使用 HTML 表达式将一个单元连接到该字段。
猜你喜欢
  • 2021-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-09
相关资源
最近更新 更多