The following are number examples for the to_char functionto_char( ) would return
to_char( ) would return
to_char( $) would return $
to_char( ) would return
The following is a list of valid parameters when the to_char function is used to convert a date to a string These parameters can be used in many combinations
Parameter |
Explanation |
YEAR
Year
spelled out
YYYY
digit year
YYY
YY
Y
Last
or
digit(s) of year
IYY
IY
I
Last
or
digit(s) of ISO year
IYYY
digit year based on the ISO standard
Q
Quarter of year (
; JAN
MAR =
)
MM
Month (
; JAN =
)
MON
Abbreviated name of month
MONTH
Name of month
padded with blanks to length of
characters
RM
Roman numeral month (I
XII; JAN = I)
WW
Week of year (
) where week
starts on the first day of the year and continues to the seventh day of the year
W
Week of month (
) where week
starts on the first day of the month and ends on the seventh
IW
Week of year (
or
) based on the ISO standard
D
Day of week (
)
DAY
Name of day
DD
Day of month (
)
DDD
Day of year (
)
DY
Abbreviated name of day
J
Julian day; the number of days since January
BC
HH
Hour of day (
)
HH
Hour of day (
)
HH
Hour of day (
)
MI
Minute (
)
SS
Second (
)
SSSSS
Seconds past midnight (
)
FF
Fractional seconds
The following are date examples for the to_char function
to_char(sysdate yyyy/mm/dd); would return //
to_char(sysdate Month DD YYYY); would return July
to_char(sysdate FMMonth DD YYYY); would return July
to_char(sysdate MON DDth YYYY); would return JUL TH
to_char(sysdate FMMON DDth YYYY); would return JUL TH
to_char(sysdate FMMon ddth YYYY); would return Jul th
You will notice that in some examples the format_mask parameter begins with FM This means that zeros and blanks are suppressed This can be seen in the examples below
to_char(sysdate FMMonth DD YYYY); would return July
to_char(sysdate FMMON DDth YYYY); would return JUL TH
to_char(sysdate FMMon ddth YYYY); would return Jul th
The zeros have been suppressed so that the day component shows as as opposed to
Oracle函數to_char轉化數字型指定小數點位數的用法
to_char函數功能就是將數值型或者日期型轉化為字符型
比如最簡單的應用
/*>*/
Select TO_CHAR() FROM DUAL
/*>*/
Select TO_CHAR() FROM DUAL
接下來再看看下面
/* > */
SELEC TO_CHAR() FROM DUAL
上面的結果 在大多數情況下都不是我們想要的結果我們想要的應該是
我們來看一下to_char函數的具體用法
TO_CHAR ( n [ fmt [ nlsparam]] )
該函數將NUMBER類型的n按數值格式fmt轉換成VARCHAR類型的值nlsparams指定由數值格式的元素返回的字符包括:
.小數點字符
.組分隔符
.本地錢幣符號
.國際錢幣符號
變元的形式為
NLS_NUMERIC_CHARACTERS=dg NLS_CURRENCY=tcxt NLS_ISO_CURRENCY=territory
其中d為小數點字符g為組分隔符
例 :TO_CHAR (LGNLS_NUMERIC_CHARACTERS= NLS_CURRENCY=NUD)=NUD
通過上面的了解再查看fmt的一些格式我們可以用以下表達式得到的值
/* > */
Select TO_CHAR() FROM DUAL
/* > ###### */
Select TO_CHAR() FROM DUAL
/* > */
Select TO_CHAR() FROM DUAL
是出來了可是前面又多了一個空格
對於 的值卻是######以及的值變成了
我們重新確定一個新的需求
去空格
小數點最多位最少保留位
>>>>
>
最終實現如下
/*
FM 除空格
允許小數點左邊最大正數為位小數點右邊最少位最多位且在第位進行四捨五入
*/
Select TO_CHAR(FM) FROM DUAL
PLSQL小經驗
一 Oracle的to_char()函數功能很強大但是在用它格式化數值型數據時應該請注意以下幾項如果是小數如這樣的數據經過to_char後再顯示會變為如果你為了讓它顯示出原來的的話就得用To_char(要格式化的數值)保留三個小數並顯示但這裡就要注意了他為你截取小數的時候是四捨五入了所以如果是要求截掉小數而不四捨五入的話就應該自己寫個函數截下去後再規格化以保證它不四捨五入
二 To_char(FM)這個函數規格化時的含義是有的地方如果有數字就顯示如果沒有數字就不顯示有的地方在沒有數字的時候也會有0來占位但這樣做也有一個很大的缺點就是如果是整數時它也仍然會顯示不要小瞧這個點一般來講頁面上要顯示的話這個點就是多余的也給我們造成了不小的麻煩還要自己再寫函數來把這個小點搞定
三 對於日期型的Oracle倒時提供了一個好的處理方法可以把日期做成數值型的然後再To_char就能顯示出你所需要的類型了
四 在使用select into時一定要注意這種方法你一定要確認肯定會有數據被查出時才能使用如果查詢結果為空時會導致報錯還有一種情況是查出來的數據是多條也會報錯所以應該盡量便宜游標來做會減少錯誤產生的機率
五 還有注意一點rownum不支持排序就是說你想用這個來控制行數的話就會發現他沒有按你指定的排序方式顯示這是一個很難辦的事而且如果你用rownum=這樣的語句來輸出第二行的話也是行不通的 六 最惡心的一點是Oracle對null的判斷變態到極點如果你說某個變量 aa=null它是判斷不出來的盡管aa的確是空即使在選擇條件裡也是判斷不出來的不知道為什麼只好用nvl()這個函數來判斷了在條件之外可以用 aa is null 來判斷
六 補充一點就是在寫存儲過程時要注意參數名不能與數據庫字段名相同否則Oracle會把這個參數名看成是字段名的即使你用表的別名區分也不行所以起參數名的時候一定要注意這點了
From:http://tw.wingwit.com/Article/program/Oracle/201311/17841.html