Oracle 函數

本來這是很簡單的函數,但在屢次忘記格式之後,決定還是翻譯一遍以銘記在心。

  參考<<Oracle Database SQL Reference>>.

  關於nls可有取值,請注意視圖sys.V_$NLS_VALID_VALUES

  一 ,TO_CHAR(NUMBER)

  本函數把參數N轉爲一個VARCHAR2類型的數值。N可以是NUMBER,BINARY_FLOAT,或者BINARY_DOUBLE。如果不帶格式,那麼函數會把N轉換爲足以表示N的VARCHAR2字符串。

  格式表參考:

  序號

  格式 簡例 說明

  1 ,(逗號) '9999,999' 逗號,一般以千分位出現,作爲分組符號使用.如果需要您也可以當作是十分位,百分位出現,可以出現N次,視乎數字的大小而定.

  變態的例子是 to_char(1234,'9,9,9,9').

  注意事項:只能出現在整數部分.

  2 .(點號) '99.99' 點號,不要念爲"句號",句號是個圓圈,點好只能出現在小數點對應的地方.只能出現一次.

  to_char(1234.34,'9,9,9,9.99')

  注意事項:只能出現在一個地方,就是原來數據小數點位置

  3 $(美元符號) '$999.99' 美元.其實你可以放在任意地方(在10G下)

  to_char(1234.34,'9,9,9,9.$99')

  注意事項:只能出現一次.

  4 0(零) '0999.99'

  零.在對應位置返回對應的字符,如果沒有則以'0'填充.

  to_char(0.34,'9,9,9,0.$99')='$0.34';to_char(1234,'9999.00')='1234.00';

  注意事項:這是一個強制的符號,對應位沒有,則以'o'填充,這是9很大不同地方

  5 9 '999.99'

  9.在小數位,則表示轉換爲對應字符,如果沒有則以0表示;在整數位,沒有對應則不填充字符.

  to_char(123,'999.99')=123.00; TO_CHAR(123,'99999.9')=123.0;

  注意事項:對於0和9而言,如果格式的位數不如數字的位數多,會返回'#'.

  譬如to_char(12345,'9999')='#####'

  6 B(空格符) 'B999' 沒有其它特別作用,在整數部分最前面加一個空格,可以出現在任意位置.

  'S'||TO_CHAR(1234,'99B99')='S 1234';

  注意事項:只能出現在整數部位.

  7 C(國際貨幣符號) 'C9999' 在特定的位置返回一個ISO貨幣符號(就是NLS_ISO_CURRENCY參數所代表的值)

  TO_CHAR(1233,'C9999')='CNY1234' ,這是新的國際標準RMB,關於這個可查詢"國際貨幣符號"

  注意事項:只能出現在整數部位第一位.

  可以通過alter session set NLS_ISO_CURRENCY='JAPAN';來修改當前會話的設置.

  8 D(ISO 小數位符號) '999D99'

  這是"點號"的國際版本(ISO),作用等同於點號,也是隻能出現一次.所不同的是,數據庫會根據NLS_NUMERIC_CHARACTER的參數值來設置內容.默認的這個值是點號.

  注意事項:沒有特別需要一般不要用這個格式符號.也不要輕易修改參數值.

  也可用alter sesssion set 來修改.

  alter session set nls_numeric_characters='!,'; to_char(1234.34,'9999d99')=1234!34

  9 EEEE(科學計算符) 9.9EEEE 科學計算符號

  TO_CHAR(2008032001,'9.9EEEE')='2.01E+09',由於是科學計算方法,所以小數位前面加一個9或者0即可,多個是沒有意義的.

  10 G(分組符號) 999G999 是逗號(,)的的ISO標準,作爲分組符號使用,可以放在多個地方使用.

  TO_CHAR(123456,'999G9G99')=123,4,56

  注意事項:同第八項 -D, 此外如果要轉換出小數點,則要和D配合使用,不能和點號配合.

  11 L(本地貨幣符號) 'L999' 是C的本地版本.可以放在整個格式的最前面和最後面.

  TO_CHAR(123456,'999G9G99D00L')=123,4,56.00¥

  注意事項:同第七項 C

  12 MI(負號) '9999MI'

  如果是負數,在尾部加上負號(-),如果是正數,則尾巴加上空格

  to_char(1234,'9999mi')||'S'||TO_CHAR(-5678,'9999MI') =1234 S5678-

  注意事項:只能放在格式尾巴

  13 PR(符號) 9999PR 是表達負數的另外一種方式.如果是正數,則頭部加上空格;如果是負數,則用小簡括號<>把數字包起來.

  TO_CHAR(-1234.89,'9G999D00PR')=<1,234.89>

  注意事項:同12

  14 RN(rn) RN(rn) 把整數(1-3999)轉換爲羅馬字符.RN表示轉爲大寫,rn表示小寫的.

  declare

  i int;

  begin

  for i in 1..20 loop

  dbms_output.put_line(to_char(i,'RN'));

  end loop;

  end;

  注意事項:只能自己使用,不能和其它符號組合使用.

  15 S '9999S' 是12,13的綜合改進版本.爲整數加一個正號+,爲負數加一個符號-.S在前則加在前,在後則在後.

  TO_CHAR(-1234,'S9999')=-1234;TO_CHAR(1234,'S9999')=+1234
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章