熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracleto

2013-11-13 16:07:09  來源: Oracle 

  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 ( ; JANMAR = ) MM Month (; JAN = ) MON Abbreviated name of month MONTH Name of month padded with blanks to length of characters RM Roman numeral month (IXII; 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
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.