Oracle to_char函數(shù)的使用方法
Oracle to_char函數(shù)的功能是將數(shù)值型或者日期型轉(zhuǎn)化為字符型,下面就為您詳細(xì)介紹Oracle to_char函數(shù)的使用,希望對(duì)您能有所幫助。
Postgres 格式化函數(shù)提供一套有效的工具用于把各種數(shù)據(jù)類型(日期/時(shí)間,int,float,numeric)轉(zhuǎn)換成格式化的字符串以及反過(guò)來(lái)從格式化的字符串轉(zhuǎn)換成原始的數(shù)據(jù)類型。
注意:所有格式化函數(shù)的第二個(gè)參數(shù)是用于轉(zhuǎn)換的模板。
表 5-7. 格式化函數(shù)
表 5-8. 用于 date/time 轉(zhuǎn)換的模板
| 模板 | 描述 |
|---|---|
| HH | 一天的小時(shí)數(shù) (01-12) |
| HH12 | 一天的小時(shí)數(shù) (01-12) |
| HH24 | 一天的小時(shí)數(shù) (00-23) |
| MI | 分鐘 (00-59) |
| SS | 秒 (00-59) |
| SSSS | 午夜后的秒 (0-86399) |
| AM or A.M. or PM or P.M. | 正午標(biāo)識(shí)(大寫) |
| am or a.m. or pm or p.m. | 正午標(biāo)識(shí)(小寫) |
| Y,YYY | 帶逗號(hào)的年(4 和更多位) |
| YYYY | 年(4和更多位) |
| YYY | 年的后三位 |
| YY | 年的后兩位 |
| Y | 年的最后一位 |
| BC or B.C. or AD or A.D. | 年標(biāo)識(shí)(大寫) |
| bc or b.c. or ad or a.d. | 年標(biāo)識(shí)(小寫) |
| MONTH | 全長(zhǎng)大寫月份名(9字符) |
| Month | 全長(zhǎng)混合大小寫月份名(9字符) |
| month | 全長(zhǎng)小寫月份名(9字符) |
| MON | 大寫縮寫月份名(3字符) |
| Mon | 縮寫混合大小寫月份名(3字符) |
| mon | 小寫縮寫月份名(3字符) |
| MM | 月份 (01-12) |
| DAY | 全長(zhǎng)大寫日期名(9字符) |
| Day | 全長(zhǎng)混合大小寫日期名(9字符) |
| day | 全長(zhǎng)小寫日期名(9字符) |
| DY | 縮寫大寫日期名(3字符) |
| Dy | 縮寫混合大小寫日期名(3字符) |
| dy | 縮寫小寫日期名(3字符) |
| DDD | 一年里的日子(001-366) |
| DD | 一個(gè)月里的日子(01-31) |
| D | 一周里的日子(1-7;SUN=1) |
| W | 一個(gè)月里的周數(shù) |
| WW | 一年里的周數(shù) |
| CC | 世紀(jì)(2 位) |
| J | Julian 日期(自公元前4712年1月1日來(lái)的日期) |
| Q | 季度 |
| RM | 羅馬數(shù)字的月份(I-XII;I=JAN)-大寫 |
| rm | 羅馬數(shù)字的月份(I-XII;I=JAN)-小寫 |
所有模板都都允許使用前綴和后綴修改器。模板里總是允許使用修改器。前綴 'FX' 只是一個(gè)全局修改器。
表 5-9. 用于日期/時(shí)間模板 to_char() 的后綴
| 后綴 | 描述 | 例子 |
|---|---|---|
| FM | 填充模式前綴 | FMMonth |
| TH | 大寫順序數(shù)后綴 | DDTH |
| th | 小寫順序數(shù)后綴 | DDTH |
| FX | 固定模式全局選項(xiàng)(見(jiàn)下面) | FX Month DD Day |
| SP | 拼寫模式(還未實(shí)現(xiàn)) | DDSP |
用法須知:
- 如果沒(méi)有使用 FX 選項(xiàng),to_timestamp 和 to_date 忽略空白。FX 必須做為模板里的第一個(gè)條目聲明。
- 反斜杠("\")必須用做雙反斜杠("\\"),例如 '\\HH\\MI\\SS'。
- 雙引號(hào)('"')之間的字串被忽略并且不被分析。如果你想向輸出寫雙引號(hào),你必須在雙引號(hào)前面放置一個(gè)雙反斜杠('\\'),例如 '\\"YYYY Month\\"'。
- to_char 支持不帶前導(dǎo)雙引號(hào)('"')的文本,但是在雙引號(hào)之間的任何字串會(huì)被迅速處理并且還保證不會(huì)被當(dāng)作模板關(guān)鍵字解釋(例如:'"Hello Year: "YYYY')。
表 5-10. 用于 to_char(numeric) 的模板
用法須知:
- 使用 'SG','PL' 或 'MI' 的帶符號(hào)字并不附著在數(shù)字上面;例如,to_char(-12, 'S9999') 生成 ' -12',而 to_char(-12, 'MI9999') 生成 '- 12'。Oracle 里的實(shí)現(xiàn)不允許在 9 前面使用 MI,而是要求 9 在 MI 前面。
- PL,SG,和 TH 是 Postgres 擴(kuò)展。
- 9 表明一個(gè)與在 9 字串里面的一樣的數(shù)字位數(shù)。如果沒(méi)有可用的數(shù)字,那么使用一個(gè)空白(空格)。
- TH 不轉(zhuǎn)換小于零的值,也不轉(zhuǎn)換小數(shù)。TH 是一個(gè) Postgres 擴(kuò)展。
- V 方便地把輸入值乘以 10^n,這里 n 是跟在 V 后面的數(shù)字。to_char 不支持把 V 與一個(gè)小數(shù)點(diǎn)綁在一起使用(例如. "99.9V99" 是不允許的)。
表 5-11. to_char 例子
| 輸入 | 輸出 |
|---|---|
| to_char(now(),'Day, HH12:MI:SS') | 'Tuesday , 05:39:18' |
| to_char(now(),'FMDay, HH12:MI:SS') | 'Tuesday, 05:39:18' |
| to_char(-0.1,'99.99') | ' -.10' |
| to_char(-0.1,'FM9.99') | '-.1' |
| to_char(0.1,'0.9') | ' 0.1' |
| to_char(12,'9990999.9') | ' 0012.0' |
| to_char(12,'FM9990999.9') | '0012' |
| to_char(485,'999') | ' 485' |
| to_char(-485,'999') | '-485' |
| to_char(485,'9 9 9') | ' 4 8 5' |
| to_char(1485,'9,999') | ' 1,485' |
| to_char(1485,'9G999') | ' 1 485' |
| to_char(148.5,'999.999') | ' 148.500' |
| to_char(148.5,'999D999') | ' 148,500' |
| to_char(3148.5,'9G999D999') | ' 3 148,500' |
| to_char(-485,'999S') | '485-' |
| to_char(-485,'999MI') | '485-' |
| to_char(485,'999MI') | '485' |
| to_char(485,'PL999') | '+485' |
| to_char(485,'SG999') | '+485' |
| to_char(-485,'SG999') | '-485' |
| to_char(-485,'9SG99') | '4-85' |
| to_char(-485,'999PR') | '<485>' |
| to_char(485,'L999') | 'DM 485 |
| to_char(485,'RN') | ' CDLXXXV' |
| to_char(485,'FMRN') | 'CDLXXXV' |
| to_char(5.2,'FMRN') | V |
| to_char(482,'999th') | ' 482nd' |
| to_char(485, '"Good number:"999') | 'Good number: 485' |
| to_char(485.8,'"Pre-decimal:"999" Post-decimal:" .999') | 'Pre-decimal: 485 Post-decimal: .800' |
| to_char(12,'99V999') | ' 12000' |
| to_char(12.4,'99V999') | ' 12400' |
| to_char(12.45, '99V9') | ' 125' |
Oracle to_char函數(shù)最簡(jiǎn)單的應(yīng)用:
/*1.0123--->'1.0123'*/
Select TO_CHAR(1.0123) FROM DUAL
/*123--->'123'*/
Select TO_CHAR(123) FROM DUAL
接下來(lái)再看看下面:
/*0.123 ---> '.123' */
SELEC TO_CHAR(0.123) FROM DUAL
上面的結(jié)果 '.123' 在大多數(shù)情況下都不是我們想要的結(jié)果,我們想要的應(yīng)該是 '0.123'。
我們來(lái)看一下to_char函數(shù)的具體用法:
TO_CHAR ( n [, fmt [, 'nlsparam']] )
Oracle to_char函數(shù)將NUMBER類型的n按數(shù)值格式fmt轉(zhuǎn)換成VARCHAR2類型的值。'nlsparams'指定由數(shù)值格式的元素返回的字符,包括:
.小數(shù)點(diǎn)字符
.組分隔符
.本地錢幣符號(hào)
.國(guó)際錢幣符號(hào)
變?cè)男问綖椋?/p>
'NLS_NUMERIC_CHARACTERS="dg" NLS_CURRENCY="tcxt" NLS_ISO_CURRENCY=territory'
其中d為小數(shù)點(diǎn)字符,g為組分隔符。
例 :TO_CHAR (17145,'L099G999','NLS_NUMERIC_CHARACTERS=".," NLS_CURRENCY="NUD"')=NUD017,145
通過(guò)上面的了解,再查看fmt的一些格式,我們可以用以下表達(dá)式得到'0.123'的值:
/*0.123 ---> ' 0.123' */
Select TO_CHAR(0.123,'0.999') FROM DUAL
/*100.12 ---> '######' */
Select TO_CHAR(100.12,'0.999') FROM DUAL
/*1.12 ---> ' 1.120' */
Select TO_CHAR(1.12,'0.999') FROM DUAL
' 0.123'是出來(lái)了,可是前面又多了一個(gè)空格。
對(duì)于 100.12 的值卻是######,以及'1.12'的值變成了 '1.120'。
我們重新確定一個(gè)新的需求:
1、去空格
2、小數(shù)點(diǎn)最多4位,最少保留2位。
1--->'1.00';1.1--->'1.00';1.12-->'1.12';1.1234--->'1.1234';
1.12345--->'1.1235'
最終實(shí)現(xiàn)如下:
/*
FM :除空格
9999999.0099:允許小數(shù)點(diǎn)左邊最大正數(shù)為7位,小數(shù)點(diǎn)右邊最少2位,最多4位,且在第5位進(jìn)行四舍五入
*/
Select TO_CHAR(123.0233,'FM9999999.0099') FROM DUAL
相關(guān)文章
Oracle實(shí)現(xiàn)分頁(yè)三種不同的方式
這篇文章主要給大家介紹了關(guān)于Oracle實(shí)現(xiàn)分頁(yè)三種不同的方式,oracle分頁(yè)與MySQL不同,MySQL是用關(guān)鍵字limit進(jìn)行分頁(yè),oracle是根據(jù)行號(hào),需要的朋友可以參考下2023-08-08
升級(jí)和卸載Oracle數(shù)據(jù)庫(kù)軟件的命令整理
這篇文章主要介紹了升級(jí)和卸載Oracle數(shù)據(jù)庫(kù)軟件的命令整理,包括升級(jí)時(shí)可能用到的查看版本號(hào)和備份操作的命令介紹,需要的朋友可以參考下2015-12-12
Oracle服務(wù)端1521端口無(wú)法telnet,服務(wù)名未開(kāi)啟監(jiān)聽(tīng)的解決
這篇文章主要介紹了Oracle服務(wù)端1521端口無(wú)法telnet,服務(wù)名未開(kāi)啟監(jiān)聽(tīng)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
Oracle數(shù)據(jù)庫(kù)TNS常見(jiàn)錯(cuò)誤的解決方法匯總
這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)TNS常見(jiàn)錯(cuò)誤的解決方法,需要的朋友可以參考下2014-07-07
Oracle數(shù)據(jù)庫(kù)表備份導(dǎo)入導(dǎo)出dmp的方式及踩坑記錄
dmp是數(shù)據(jù)庫(kù)導(dǎo)出的文件,用以備份數(shù)據(jù)庫(kù)用,一般會(huì)用exp命令來(lái)導(dǎo)出,用imp命令來(lái)導(dǎo)入也就是恢復(fù)數(shù)據(jù)庫(kù),下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫(kù)表備份導(dǎo)入導(dǎo)出dmp的方式及踩坑記錄,需要的朋友可以參考下2022-07-07

