2017-03-14 67 views
-1
select .5 as colm from dual; 

格式給出0.5作爲輸出十進制數字和貨幣在甲骨文

select .5||'$' as colm from dual; 

.5$作爲結果。爲什麼我沒有收到0.5$

如何在第二個查詢中實現0.5$

+0

提示:這取決於客戶如何顯示數字。 –

+0

在目標表中,值被加載爲'0.5 $',所以當我做一個減號失敗,那麼有沒有什麼辦法像轉換爲字符串或轉換數據類型? –

+0

@sure https://duckduckgo.com/?q=oracle+convert+number+to+string&t=ffsb&ia=qa但是,什麼是用例,你是如何達到這種情況的? –

回答

1

甲骨文設置

CREATE TABLE your_table (value) AS 
    SELECT 0.5 FROM DUAL UNION ALL 
    SELECT 5 FROM DUAL; 

查詢

SELECT value, 
     REGEXP_REPLACE(
     TO_CHAR(value, 'FM9999999990.99'), 
     '\.$' 
     ) || '$' AS formatted_value, 
     CASE 
     WHEN TRUNC(value) = value 
     THEN TO_CHAR(value, '9999999990') 
     ELSE TO_CHAR(value, 'FM9999999990.99') 
     END || '$' AS alternate_value, 
     TO_CHAR(value, '9999999990.99L') AS currency_value 
FROM your_table; 

輸出

VALUE FORMATTED_VALUE ALTERNATE_VALUE CURRENCY_VALUE 
----- --------------- --------------- -------------- 
    0.5 0.5$   0.5$   0.50$ 
    5 5$    5$    5.00$ 
+0

'正則表達式'對此太簡單了。 –

+0

@MaheswaranRavisankar如果OP想要一個可選的小數點,那麼他們將不得不做一些處理來確定小數點是否必要。我添加了一個非正則表達式選項,可以給出相同的結果。 – MT0

-1

您無法將「NUMBER」字段與字符串字段連接起來。

在你的情況.5是一個數字,'$'是一個字符串。所以,如果你想你的結果是「0.5 $」你必須通過0.5爲如下字符串: -

select '0.5'||'$' as colm from dual; 
+0

'src作爲 (選擇.5作爲colm與雙) select colm ||'$'as new_col from src'在這種情況下,這個技巧不會幫助 –

+0

它會一直工作,正如我之前說的,你不能連接一個數字用一個字符串。兩者都必須是字符串。對於上面的查詢,你可以使用 'src作爲(選擇'0.5'作爲colm從雙)select colm ||'$'as new_col from src' – Sid

+0

如果你只需要連接.5而不是'0.5 '然後通過在oracle中執行** TO_CHAR(.5)**或在mssql中執行** cast(.5 as varchar)**來將.5轉換爲字符串。 – Sid

2

追加相反的,我們可以做如下圖所示。以預期格式格式化貨幣。

select TO_CHAR(.5,'FM999999990.099999999$') as colm from dual; 

否則,你仍然可以Concat的貨幣符號一樣,

select TO_CHAR(.5,'FM999999990.099999999')||'$' as colm from dual; 

關鍵是你必須在連接前明確提到的數字格式。

格式模型在文檔中有很好的介紹。 Read it here

+0

你能告訴我在這種情況下什麼是'FM0.99999999'? –

+0

'選擇TO_CHAR(5,'FM0.99999999')||'$'作爲new_col from dual'它給我只需5. $ –

+0

只需使用可用的格式,匹配您的偏好'FM999999990.99999999 $' –

1

你喜歡WR ite $作爲一個常量字符串還是您的本地貨幣符號(US-Dollars)?

在後一種情況下,該解決方案可以爲你工作:

SELECT TO_CHAR(0.5555, 'fm999999990D99L') from dual; 

TO_CHAR - Number Format Elements:在指定位置

  • 大號
    返回本地貨幣符號(在 電流值的NLS_CURRENCY參數)。
相關問題