共計 3062 個字符,預(yù)計需要花費 8 分鐘才能閱讀完成。
本篇內(nèi)容主要講解“數(shù)據(jù)庫中 TO_CHAR 格式轉(zhuǎn)換的方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓丸趣 TV 小編來帶大家學(xué)習(xí)“數(shù)據(jù)庫中 TO_CHAR 格式轉(zhuǎn)換的方法是什么”吧!
我的經(jīng)理叫我寫一個函數(shù),這個函數(shù)接受一個正整數(shù)并返回相應(yīng)的序數(shù) (比如,2- 2nd, 145- 145th), 這個序數(shù)是一個字符串。這個函數(shù)只接受 1 和 50,000 之間的整數(shù)。
下列的哪些選項實現(xiàn)了函數(shù) plch_n_to_nth, 從而使得它滿足上述需求,在下列塊被執(zhí)行之后:
BEGIN
DBMS_OUTPUT.put_line (plch_n_to_nth (1));
DBMS_OUTPUT.put_line (plch_n_to_nth (8));
DBMS_OUTPUT.put_line (plch_n_to_nth (256));
DBMS_OUTPUT.put_line (plch_n_to_nth (25763));
/
我能見到如下輸出:
1st
256th
25763rd
(A)
CREATE OR REPLACE FUNCTION plch_n_to_nth (n_in IN INTEGER)
RETURN VARCHAR2
BEGIN
RETURN TO_CHAR (n_in, 9999th
/
SQL BEGIN
2 DBMS_OUTPUT.put_line (plch_n_to_nth (1));
3 DBMS_OUTPUT.put_line (plch_n_to_nth (8));
4 DBMS_OUTPUT.put_line (plch_n_to_nth (256));
5 DBMS_OUTPUT.put_line (plch_n_to_nth (25763));
6 END;
7 /
BEGIN
DBMS_OUTPUT.put_line (plch_n_to_nth (1));
DBMS_OUTPUT.put_line (plch_n_to_nth (8));
DBMS_OUTPUT.put_line (plch_n_to_nth (256));
DBMS_OUTPUT.put_line (plch_n_to_nth (25763));
ORA-01481: 無效的數(shù)字格式模型
ORA-06512: 在 YOGA.PLCH_N_TO_NTH , line 5
ORA-06512: 在 line 2
SQL
(B)
CREATE OR REPLACE FUNCTION plch_n_to_nth (n_in IN INTEGER)
RETURN VARCHAR2
BEGIN
RETURN LOWER (
TO_CHAR ( TO_DATE ( 1-1- || n_in, dd-mm-yyyy)
, FMYYYYth
/
SQL BEGIN
2 DBMS_OUTPUT.put_line (plch_n_to_nth (1));
3 DBMS_OUTPUT.put_line (plch_n_to_nth (8));
4 DBMS_OUTPUT.put_line (plch_n_to_nth (256));
5 DBMS_OUTPUT.put_line (plch_n_to_nth (25763));
6 END;
7 /
256th
BEGIN
DBMS_OUTPUT.put_line (plch_n_to_nth (1));
DBMS_OUTPUT.put_line (plch_n_to_nth (8));
DBMS_OUTPUT.put_line (plch_n_to_nth (256));
DBMS_OUTPUT.put_line (plch_n_to_nth (25763));
ORA-01830: 日期格式圖片在轉(zhuǎn)換整個輸入字符串之前結(jié)束
ORA-06512: 在 YOGA.PLCH_N_TO_NTH , line 5
ORA-06512: 在 line 5
SQL
(C)
CREATE OR REPLACE FUNCTION plch_n_to_nth (n_in IN INTEGER)
RETURN VARCHAR2
BEGIN
RETURN LOWER (
TO_CHAR (
TO_DATE ( 1-1-2011 || n_in
, dd-mm-yyyy SSSSS )
, FMSSSSSth
/
SQL BEGIN
2 DBMS_OUTPUT.put_line (plch_n_to_nth (1));
3 DBMS_OUTPUT.put_line (plch_n_to_nth (8));
4 DBMS_OUTPUT.put_line (plch_n_to_nth (256));
5 DBMS_OUTPUT.put_line (plch_n_to_nth (25763));
6 END;
7 /
256th
25763rd
PL/SQL procedure successfully completed
SQL
(D)
CREATE OR REPLACE FUNCTION plch_n_to_nth ( n_in IN INTEGER)
RETURN VARCHAR2
c_last_digit CONSTANT PLS_INTEGER
:= MOD (n_in, 10) ;
c_tens_digit CONSTANT CHAR (1)
:= SUBSTR (0 || TO_CHAR (n_in), -2, 1) ;
BEGIN
RETURN TO_CHAR (n_in)
|| CASE
WHEN c_tens_digit = 1 THEN th
WHEN c_last_digit = 1 THEN st
WHEN c_last_digit = 2 THEN nd
WHEN c_last_digit = 3 THEN rd
ELSE th
END;
END plch_n_to_nth;
/
SQL BEGIN
2 DBMS_OUTPUT.put_line (plch_n_to_nth (1));
3 DBMS_OUTPUT.put_line (plch_n_to_nth (8));
4 DBMS_OUTPUT.put_line (plch_n_to_nth (256));
5 DBMS_OUTPUT.put_line (plch_n_to_nth (25763));
6 END;
7 /
256th
25763rd
PL/SQL procedure successfully completed
SQL
CD.
(A) 你不能在 TO_CHAR(NUMBER) 中使用 TH 格式,只能在 TO_CHAR (datetime) 中使用。(B) 差點就對了,這個答案在年份使用了 th 格式, 但 ORACLE 不支持高達(dá) 50,000 的年份,會出現(xiàn)如下錯誤:ORA-01830: date format picture ends before converting entire input string
(C) 這個正確使用了 TO_CHAR (datetime) 的 th 格式,一天中有 86400 秒,足夠使用。(D) 這個自定義函數(shù)正確實現(xiàn)了轉(zhuǎn)換規(guī)則。
到此,相信大家對“數(shù)據(jù)庫中 TO_CHAR 格式轉(zhuǎn)換的方法是什么”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
正文完