oracle to_char函數將number轉成string

很多數據轉換處理操作時,會遇到將0.007007040000轉換成0.70%的需求,我們使用Oracle 的SQL 函數 to_char可以實現這種轉換,需要了解的朋友可以參考下

很多數據轉換處理操作時,會遇到將0.007007040000轉換成0.70%的需求,我們使用Oracle 的SQL 函數 to_char可以實現這種轉換。
這個函數用來將DATE或NUMBER數據類型轉換成可顯示的字符串,格式是to_char(number_type, format_mask)。
格式’999.99’,9表示對應的某一個指定位數的值,如果是值是0則忽略不顯示,如果指定位數沒有值,則以空格表示。
格式’0990.990’,0表示對應的某一個指定位數的值,如果是值是0則顯示為0,如果是沒有值也顯示為0。
格式’FM990.90′,FM表示將顯示出來的字符串定位數沒有值而顯示的空格清理掉,作用和ltrim類似。
代碼如下:
SQL> select to_char(12304.560,’999.99′) from dual;
TO_CHAR(12304.560,’999.99′)
—————————
#######
SQL> select to_char(104.560,’999.99′) from dual;
TO_CHAR(104.560,’999.99′)
————————-
104.56
SQL> select to_char(104.560,’99999.99′) from dual;
TO_CHAR(104.560,’99999.99′)
—————————
104.56
SQL> select to_char(104.560,’99999.990′) from dual;
TO_CHAR(104.560,’99999.990′)
—————————-
104.560
SQL> select to_char(104.560,’0099.990′) from dual;
TO_CHAR(104.560,’0099.990′)
—————————
0104.560

代碼如下:
SQL>
SQL> select to_char(round(0.007007040000, 4) * 100, ‘FM99999999990.90’) || ‘%’ as aa,
2 length(to_char(round(0.007007040000, 4) * 100, ‘FM99999999990.90’) || ‘%’) as bb
3 from dual;
AA BB
—————- ———-
0.70% 5
SQL>
SQL> select to_char(round(0.007007040000, 4) * 100, ‘99999999990.90’) || ‘%’ as aa,
2 length(to_char(round(0.007007040000, 4) * 100, ‘99999999990.90’) || ‘%’) as bb
3 from dual;
AA BB
—————- ———-
0.70% 16

這是to_char將數字轉換成字符串的常見操作功能,還有其他一些格式,見to_char(numeric)的格式模板。
代碼如下:
模板 描述
9 帶有指定位數的值
0 前導零的值
. (句點) 小數點
, (逗號) 分組(千)分隔符
PR 尖括號內負值
S 帶負號的負值(使用本地化)
L 貨幣符號(使用本地化)
D 小數點(使用本地化)
G 分組分隔符(使用本地化)
MI 在指明的位置的負號(如果數字 PL 在指明的位置的正號(如果數字 > 0)
SG 在指明的位置的正/負號
RN 羅馬數字(輸入在 1 和 3999 之間)
TH or th 轉換成序數
V 移動 n 位(小數)(參閱注解)
EEEE 科學記數?,F在不支持。

它還能將時間格式的數據轉換成字符串,只是格式更加復雜。

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享