【DB筆試面試462】如何將一個數字轉換為字元串並且按照指定格式顯示?
- 2019 年 10 月 11 日
- 筆記
題目部分
如何將一個數字轉換為字元串並且按照指定格式顯示?
答案部分
在應用中,可能需要將0.007007040000轉換成0.70%,或需要顯示「0.00」、「1.20」等類似的數據格式,此時可以使用TO_CHAR函數來轉換。這個函數可以用來將DATE或NUMBER數據類型轉換成可顯示的字元串,格式是TO_CHAR(number_type,format_mask),format_mask轉換格式有多種,如下表所示:
格式 | 含義 |
|---|---|
9 | 顯示數字,9表示對應的某一個指定位數的值,若值是0則忽略不顯示,若指定位數沒有值,則以空格表示。 |
0 | 顯示數字,0表示對應的某一個指定位數的值,若值是0則顯示為0,若指定位數沒有值也顯示為0。 |
FM或fm | FM表示將顯示出來的字元串定位數沒有值而顯示的空格清理掉,作用和ltrim類似。 |
. | 在指定位置顯示小數點。 |
, | 在指定位置顯示逗號。 |
$ | 在數字前加美元。 |
L | 在數字前面加本地貨幣符號。 |
C | 在數字前面加國際貨幣符號。 |
G | 在指定位置顯示組分隔符。 |
D | 在指定位置顯示小數點符號(.)。 |
PR | 尖括弧內負值。 |
MI | 在指明的位置的負號(如果數字 < 0)。 |
PL | 在指明的位置的正號(如果數字 > 0)。 |
S | 帶負號的負值(使用本地化)。 |
SG | 在指明的位置的正/負號。 |
RN | 羅馬數字(輸入在 1 和 3999 之間)。 |
TH或th | 轉換成序數。 |
V | 移動 n 位(小數) |
EEEE | 科學記數。現在不支援。 |
需要注意的是,在NUMBER類型轉換為字元串時,負數會返回前面包含負號的字元串,正數則會返回前面包含空格的字元串,除非格式模式包含MI、S、或PR元素。即LENGTH(TO_CHAR(4, '0000'))的值其實是5,所以需要使用FM格式或ltrim去掉空格。示例如下所示:
SYS@PROD1> SELECT TO_CHAR(0.00, 'FM9999999999999999990.00') A, 2 TO_CHAR(ROUND(0.007007040000, 4) * 100, 'FM99999999990.90') || '%' AS B, 3 LENGTH(TO_CHAR(4, '0000')) C, 4 LENGTH(TO_CHAR(4, 'FM0000')) C1, 5 LENGTH(LTRIM(TO_CHAR(4, '0000'))) C2 6 FROM DUAL; A B C C1 C2 ----------------------- ---------------- ---------- ---------- ---------- 0.00 0.70% 5 4 4
本文選自《Oracle程式設計師面試筆試寶典》,作者:李華榮。
About Me:小麥苗
● 本文作者:小麥苗,只專註於資料庫的技術,更注重技術的運用
● 作者部落格地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列題目來源於作者的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
● 題目解答若有不當之處,還望各位朋友批評指正,共同進步