[英]TO_Char number format model in Oracle
我不完全了解如何使用to_char函數將數字轉換為具有適當格式模型的字符串。
實際數字具有以下格式:
我嘗試使用to_char,但無法達到在所有條件下均可使用的結果
輸出應為0,00235
或156,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.