簡體   English   中英

Oracle中的TO_Char數字格式模型

[英]TO_Char number format model in Oracle

我不完全了解如何使用to_char函數將數字轉換為具有適當格式模型的字符串。

實際數字具有以下格式:

  • 使用逗號作為小數點分隔符
  • 總是5個十進制數字
  • 整數最多可以為6(可能是無窮大,但現在它們從未超過6)
  • 數字可以是正數或負數
  • 數字可以以0開頭

我嘗試使用to_char,但無法達到在所有條件下均可使用的結果

輸出應為0,00235156,45623-0,0235-156,45623一些示例

請記住,您正在將數字轉換為字符串。 該數字沒有任何“,”或“”的含義。 或其他任何東西-這是一個數字。

技巧是獲得TO_CHAR函數以將內部數字轉換為所需的字符串表示形式。 有幾個問題需要擔心:使小數點(小數)正確並處理填充。

這是一個工作示例:

SELECT to_char(0.00235,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

0,00235

SELECT to_char(156.45823,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

156,45823

SELECT to_char(-0.0235,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

-0,0235

SELECT to_char(-156.45623,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

-156,45623

SELECT to_char(123456789.45623,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;

123456789,45623

面膜的相關部位:

FM用於修剪Oracle通常用來填充數字的前導和尾隨空格。

D是基數點,具體取決於您的NLS設置。

NLS_NUMERIC_CHARACTERS ...是本地NLS設置的替代-如果您的語言環境對小數使用逗號,則可能沒有必要,但這是您可以在具有北美設置的數據庫中強制執行此行為的方法。

從@Vadzim的帖子中無恥地被盜。

使用以下模式,您應該能夠獲取所需的格式:

rtrim(to_char(num, 'FM999999999999990.99'), '.')

https://rextester.com/QRSD48676

SELECT rtrim(to_char('0,00235', 'FM999999999999990.99999'), '.') FROM DUAL\\
SELECT rtrim(to_char('156,45623', 'FM999999999999990.99999'), '.') FROM DUAL\\  
SELECT rtrim(to_char('-0,0235', 'FM999999999999990.99999'), '.') FROM DUAL\\
SELECT rtrim(to_char('-156,45623', 'FM999999999999990.99999'), '.') FROM DUAL\\

結果:

0.00235
156.45623
-0.0235
-156.45623

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM