Oracle中的substr()函數的應用及解析

來源:互聯網
上載者:User

標籤:序號   大數   image   分享   一個   --   ...   acl   9.png   

1)substr函數格式   (俗稱:截取函數)

  格式1: substr(string string, int a, int b);

  格式2:substr(string string, int a) ;

解釋:

格式1

1、string 需要截取的字串
2、a 截取字串的開始位置(註:當a等於0或1時,都是從第一位開始截取)
3、b 要截取的字串的長度

格式2

1、string 需要截取的字串
2、a 可以理解為從第a個字元開始截取後面所有的字串。

 

2)執行個體解析

執行個體:

1、substr("HelloWorld",0,3);  //返回結果:Hel,截取從H開始3個字元
2、substr("HelloWorld",1,3);  //返回結果:Hel,截取從H開始3個字元
3、substr("HelloWorld",2,3);  //返回結果:ell,截取從e開始3個字元
4、substr("HelloWorld",0,100);  //返回結果:HelloWorld,100雖然超出預先處理的字串最長度,但不會影響返回結果,系統按預先處理字串最大數量返回。
5、substr("HelloWorld",-1,3);  //返回結果:d
6、substr("HelloWorld",-2,3);  //返回結果:ld
7、substr("HelloWorld",-3,3);  //返回結果:rld
8、substr("HelloWorld",-4,3);  //返回結果:orl

註:當a等於0或1時,都是從第一位開始截取(如:1和2)
註:雖然5、6、7、8截取的都是3個字元,結果卻不是3 個字元; 只要a<b,取a得個數(如:5、6、7),當a>b時,才取b的個數(如:7和8)

9、substr("HelloWorld",0);  //返回結果:HelloWorld,截取所有字元
10、substr("HelloWorld",1);  //返回結果:HelloWorld,截取所有字元
11、substr("HelloWorld",2);  //返回結果:elloWorld,截取從e開始之後所有字元
12、substr("HelloWorld",3);  //返回結果:lloWorld,截取從l開始之後所有字元
13、substr("HelloWorld",-1);  //返回結果:d,從最後一個d開始 往回截取1個字元
14、substr("HelloWorld",-2);  //返回結果:ld,從最後一個d開始 往回截取2個字元
15、substr("HelloWorld",-3);  //返回結果:rld,從最後一個d開始 往回截取3個字元


註:當只有兩個參數時;不管是負幾,都是從最後一個開始 往回截取(如:13、14、15)

 圖解:

1、

2、

5、

6、

7、

8、

13、

14、

15、

 

 3)完整函數執行個體

create or replace function get_request_code return varchar2 AS       -- 函數的作用:自動產生單號       v_mca_no   mcode_apply_01.mca_no%TYPE;       CURSOR get_max_mca_no IS                 SELECT max(substr(mca_no, 11, 1)) -- 查出的最大單號,截取出最後三位,如001、002...00n              FROM  mcode_apply_01               WHERE  substr(mca_no, 3, 8) = to_char(sysdate, ‘YYYYMMDD‘); -- 產生(從第三位開始)日期【如:20170422】        v_requestcode VARCHAR2(3);  BEGIN       OPEN get_max_mca_no;        FETCH get_max_mca_no INTO v_requestcode;        CLOSE get_max_mca_no;  IF v_requestcode IS NULL THEN                v_requestcode := NVL(v_requestcode, 0);  -- NVL()函數:當v_requestcode為NULL時,取0作為值  END IF;       v_requestcode := lpad(v_requestcode + 1, 3, ‘0‘);  -- 將遊標中截取到的值加1,然後向左填充0,產生 001...00n 序號; lpad()函數:向左填充       v_mca_no := ‘MA‘ || to_char(sysdate, ‘YYYYMMDD‘) || v_requestcode;  -- 最終產生的申請單號(如:MA20170422001;MA20170422002;...MA2017042200N )   RETURN ‘0~,‘|| v_mca_no; END ;

 

Oracle中的substr()函數的應用及解析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.