oracle to_char函數(shù)將number轉成string
更新時間:2012年11月28日 15:35:50 作者:
很多數(shù)據(jù)轉換處理操作時,會遇到將0.007007040000轉換成0.70%的需求,我們使用Oracle 的SQL 函數(shù) to_char可以實現(xiàn)這種轉換,需要了解的朋友可以參考下
很多數(shù)據(jù)轉換處理操作時,會遇到將0.007007040000轉換成0.70%的需求,我們使用Oracle 的SQL 函數(shù) to_char可以實現(xiàn)這種轉換。
這個函數(shù)用來將DATE或NUMBER數(shù)據(jù)類型轉換成可顯示的字符串,格式是to_char(number_type, format_mask)。
格式'999.99',9表示對應的某一個指定位數(shù)的值,如果是值是0則忽略不顯示,如果指定位數(shù)沒有值,則以空格表示。
格式'0990.990',0表示對應的某一個指定位數(shù)的值,如果是值是0則顯示為0,如果是沒有值也顯示為0。
格式'FM990.90',FM表示將顯示出來的字符串定位數(shù)沒有值而顯示的空格清理掉,作用和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將數(shù)字轉換成字符串的常見操作功能,還有其他一些格式,見to_char(numeric)的格式模板。
模板 描述
9 帶有指定位數(shù)的值
0 前導零的值
. (句點) 小數(shù)點
, (逗號) 分組(千)分隔符
PR 尖括號內(nèi)負值
S 帶負號的負值(使用本地化)
L 貨幣符號(使用本地化)
D 小數(shù)點(使用本地化)
G 分組分隔符(使用本地化)
MI 在指明的位置的負號(如果數(shù)字 < 0)
PL 在指明的位置的正號(如果數(shù)字 > 0)
SG 在指明的位置的正/負號
RN 羅馬數(shù)字(輸入在 1 和 3999 之間)
TH or th 轉換成序數(shù)
V 移動 n 位(小數(shù))(參閱注解)
EEEE 科學記數(shù)。現(xiàn)在不支持。
它還能將時間格式的數(shù)據(jù)轉換成字符串,只是格式更加復雜。
這個函數(shù)用來將DATE或NUMBER數(shù)據(jù)類型轉換成可顯示的字符串,格式是to_char(number_type, format_mask)。
格式'999.99',9表示對應的某一個指定位數(shù)的值,如果是值是0則忽略不顯示,如果指定位數(shù)沒有值,則以空格表示。
格式'0990.990',0表示對應的某一個指定位數(shù)的值,如果是值是0則顯示為0,如果是沒有值也顯示為0。
格式'FM990.90',FM表示將顯示出來的字符串定位數(shù)沒有值而顯示的空格清理掉,作用和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將數(shù)字轉換成字符串的常見操作功能,還有其他一些格式,見to_char(numeric)的格式模板。
復制代碼 代碼如下:
模板 描述
9 帶有指定位數(shù)的值
0 前導零的值
. (句點) 小數(shù)點
, (逗號) 分組(千)分隔符
PR 尖括號內(nèi)負值
S 帶負號的負值(使用本地化)
L 貨幣符號(使用本地化)
D 小數(shù)點(使用本地化)
G 分組分隔符(使用本地化)
MI 在指明的位置的負號(如果數(shù)字 < 0)
PL 在指明的位置的正號(如果數(shù)字 > 0)
SG 在指明的位置的正/負號
RN 羅馬數(shù)字(輸入在 1 和 3999 之間)
TH or th 轉換成序數(shù)
V 移動 n 位(小數(shù))(參閱注解)
EEEE 科學記數(shù)。現(xiàn)在不支持。
它還能將時間格式的數(shù)據(jù)轉換成字符串,只是格式更加復雜。
相關文章
Oracle連接數(shù)據(jù)庫提示ORA-12638:身份證明檢索失敗的解決辦法
今天在使用應用程序連接Oracle時碰到了"ORA-12638:身份證明檢索失敗"錯誤,給大家總結解決方法,這篇文章主要給大家介紹了關于Oracle連接數(shù)據(jù)庫提示ORA-12638:身份證明檢索失敗的解決辦法,需要的朋友可以參考下2023-10-10PLSQL連接本地oracle或遠程oracle數(shù)據(jù)庫實現(xiàn)隨意切換功能
這篇文章主要介紹了PLSQL連接本地oracle或遠程oracle數(shù)據(jù)庫實現(xiàn)隨意切換功能,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09Oracle 遍歷游標的四種方式匯總(for、fetch、while、BULK COLLECT)
這篇文章主要介紹了Oracle 遍歷游標的四種方式匯總(for、fetch、while、BULK COLLECT),幫助大家更好的理解和使用Oracle數(shù)據(jù)庫,感興趣的朋友可以了解下2020-10-10Oracle常用函數(shù)Trunc及Trunc函數(shù)用法講解
這篇文章主要介紹了Oracle常用函數(shù)Trunc及Trunc函數(shù)用法講解,需要的朋友可以參考下2017-11-11通過LogMiner實現(xiàn)Oracle數(shù)據(jù)庫同步遷移
為了實現(xiàn)Oracle數(shù)據(jù)庫之間的數(shù)據(jù)同步,網(wǎng)上的資料比較少的時候。最好用的Oracle數(shù)據(jù)庫同步工具是:GoldenGate ,而GoldenGate是要收費的。這個時候就可以使用LogMiner來實現(xiàn)Oracle數(shù)據(jù)同步遷移,下面文章內(nèi)容將給大家介紹其實現(xiàn)方法2021-09-09解決Oracle字符串中包含數(shù)字、特殊符號的排序問題
最近做項目遇到這樣的需求,要求實現(xiàn)某小區(qū)需要按照小區(qū)、樓棟、單元號、房間號進行排序??此坪芎唵蔚囊粋€需求,一條sql語句搞定,其實套路很深,下面小編給大家分享下Oracle字符串中包含數(shù)字、特殊符號的排序問題2017-11-11