2014-02-05 56 views
1

我試圖找到正確的Oracle格式掩碼,以某種方式在報表的Apex頁面上顯示數字。 大部分時間這些數字是整數,但有時這些數字可以是浮點數。 比方說,我有以下三個查詢:用於顯示整數和浮點數的Oracle TO_CHAR格式掩碼

查詢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.

+0

[十進制數,爲\ _char和Oracle(可能重複http://stackoverflow.com/questions/2033756/decimal-number-to-char-和-oracle) – Ben

+0

@Ben是的,這個問題非常相似,我還沒有找到那個問題。然而,我給出的答案並不是很令人滿意,因爲我只能在Apex中指定格式掩碼。否則,我將不得不在早期階段生成字符串,這會破壞Apex報告中的排序行爲。 –

+1

@BartvanderDrift - 你不能用你的格式掩碼修剪你的字符串? –

回答

0

有辦法改變你的列值的查詢,同時仍保留的功能(部分)在報告中。但是,如果您有多個這樣的列和多個報表,您可能會發現很多開銷很少。
在OTN論壇上查看此帖:order by date in IR
問題大致相同:列中的數據代表日期,但實際上不是日期。這篇文章包含一個解決方案,用於頂點< 4.2。
從4.2開始,你有更好的選擇稱爲HTML表達式。
再次,從OTN鏈接:Re: Report formatting/sorting issue

從聯郵報,用戶fac586

包括方差和查詢ABS(方差):

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> 

Hid e #VARIANCE_COLOR##ABS_VARIANCE#列。

#ABS_VARIANCE#是在列中顯示的值,但排序是在底層SQL中使用原始方差值執行的 。

這很像亞歷克斯建議的,但有點更多的工作:格式化源代碼,添加一個HTML表達式,隱藏另一列。
我想這取決於你想駕駛多遠。爲什麼不直接通過屬性將格式應用於列?
另外請注意,可以在這些字段中使用字符串替換語法。您可以有幾個包含格式掩碼的應用程序項目,然後在格式掩碼字段中引用正確的掩碼。例如: 例如: 應用程序項目AI_FORMAT_MASK1的值爲FM9990D00
在格式掩碼字段然後可以使用&AI_FORMAT_MASK1.

+0

湯姆,我喜歡你的解決方案,使用兩個不同的列。我要試試這個。無論如何,我使用HTML表達式將單元連接到字段。 –