【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/

● 本系列題目來源於作者的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

● 題目解答若有不當之處,還望各位朋友批評指正,共同進步

Tags: