本篇內(nèi)容主要講解“數(shù)據(jù)庫(kù)中TO_CHAR格式轉(zhuǎn)換的方法是什么”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“數(shù)據(jù)庫(kù)中TO_CHAR格式轉(zhuǎn)換的方法是什么”吧!
創(chuàng)新互聯(lián)建站是一家專(zhuān)注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃、微信平臺(tái)小程序開(kāi)發(fā)、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動(dòng)互聯(lián)開(kāi)發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立10年以來(lái),已經(jīng)為成百上千家成都圍欄護(hù)欄各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)?,F(xiàn)在,服務(wù)的成百上千家客戶與我們一路同行,見(jiàn)證我們的成長(zhǎng);未來(lái),我們一起分享成功的喜悅。我的經(jīng)理叫我寫(xiě)一個(gè)函數(shù),這個(gè)函數(shù)接受一個(gè)正整數(shù)并返回相應(yīng)的序數(shù)(比如,2->2nd, 145->145th), 這個(gè)序數(shù)是一個(gè)字符串。這個(gè)函數(shù)只接受1和50,000之間的整數(shù)。
下列的哪些選項(xiàng)實(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)); END; /
我能見(jiàn)到如下輸出:
1st 8th 256th 25763rd
(A)
CREATE OR REPLACE FUNCTION plch_n_to_nth (n_in IN INTEGER) RETURN VARCHAR2 IS BEGIN RETURN TO_CHAR (n_in, '9999th'); END; /
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)); END; ORA-01481: 無(wú)效的數(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 IS BEGIN RETURN LOWER ( TO_CHAR ( TO_DATE ('1-1-' || n_in, 'dd-mm-yyyy') , 'FMYYYYth')); END; /
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 / 1st 8th 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)); END; ORA-01830: 日期格式圖片在轉(zhuǎn)換整個(gè)輸入字符串之前結(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 IS BEGIN RETURN LOWER ( TO_CHAR ( TO_DATE ('1-1-2011 ' || n_in , 'dd-mm-yyyy SSSSS') , 'FMSSSSSth')); END; /
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 / 1st 8th 256th 25763rd PL/SQL procedure successfully completed SQL>
(D)
CREATE OR REPLACE FUNCTION plch_n_to_nth ( n_in IN INTEGER) RETURN VARCHAR2 IS 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 / 1st 8th 256th 25763rd PL/SQL procedure successfully completed SQL>
CD. (A)你不能在TO_CHAR(NUMBER)中使用TH格式,只能在TO_CHAR (datetime)中使用。 (B)差點(diǎn)就對(duì)了,這個(gè)答案在年份使用了th格式, 但ORACLE不支持高達(dá)50,000的年份,會(huì)出現(xiàn)如下錯(cuò)誤: ORA-01830: date format picture ends before converting entire input string (C)這個(gè)正確使用了TO_CHAR (datetime)的th格式,一天中有86400秒,足夠使用。 (D)這個(gè)自定義函數(shù)正確實(shí)現(xiàn)了轉(zhuǎn)換規(guī)則。
到此,相信大家對(duì)“數(shù)據(jù)庫(kù)中TO_CHAR格式轉(zhuǎn)換的方法是什么”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!