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
參考<<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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.