Menu

Oracle中的substr()函数 详解及应用 – DSHORE

0 Comment

1)substr应变量体式   (俗名:字母串应变量)

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

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

解说:

体式1

1、string 需求截取的字母串
2、a 开端字母串截取(注):当每一比得上0或1,率先是从截获的开端)
3、b 字母串的大小被截获

体式2

1、string 需求截取的字母串
2、a 可以变得流行为字母串截取说到底从第每一特点。

2)旋转辨析

1、substr(”Hello全程的,0,3); //循环最大的:Hel,开端从H3字
2、substr(”Hello全程的,1,3); //循环最大的:Hel,开端从H3字
3、substr(”Hello全程的,2,3); //循环最大的:ell,从E中截取3个印
4、substr(”Hello全程的,0,100); //循环最大的:HelloWorld,100憎恨字母串大小超越预调节,但不熟练的产生循环的最大的,经过预调节后的字母串的最大总额,零碎循环。
5、substr(”Hello全程的,5,3); //循环最大的:oWo
6、substr(”Hello 全程的,5,3); //循环最大的:o W (中部的留空隙是每一字母串,最大的是:o空格W)
7、substr(”Hello全程的,-1,3); //循环最大的:d (第每一从后头开端1字放回。,Not the 3。事业:白色的上面 第三正文)
8、substr(”Hello全程的,-2,3); //循环最大的:ld (二位从后头拿2字。,Not the 3。事业:白色的上面 第三正文)
9、substr(”Hello全程的,-3,3); //循环最大的:rld (从后头倒数第三开端要3个字)
10、substr(”Hello全程的,-4,3); //循环最大的:orl (四个一组之物位从后头3个印从后头)

注:当每一比得上0或1,从第每一开端截球(比如):1和2)
注:假如有每一留空隙当中的HelloWorld,与留空隙将被包住在带着(比如:5和6)
注:憎恨7、8、9、10个截距是3个印,最大的归咎于3。 个印; 既然 |a| ≤ b,把每一数(如:7、8、9);当 |a| ≥ b时,只取B的号码,a决定截取安置(比如:9和10)

11、substr(”Hello全程的,0);  //循环最大的:HelloWorld,缠住印截取
12、substr(”Hello全程的,1);  //循环最大的:HelloWorld,缠住印截取
13、substr(”Hello全程的,2);  //循环最大的:elloWorld,e后截取缠住印
14、substr(”Hello全程的,3);  //循环最大的:lloWorld,从L开端到缠住印以后的
15、substr(”Hello全程的,-1);  //循环最大的:d,从最大的的D 截取1个印
16、substr(”Hello全程的,-2);  //循环最大的:ld,从最大的的D 截取2个印
17、substr(”Hello全程的,-3);  //循环最大的:rld,从最大的的D 截取3个印

注:就是两个限制因素时;无论是,从去岁开端 逆截取(如:15、16、17)

3)容器截图:

1、

2、

5、

6、

7、

8、

9、

10、

15、

16、

17、

4)应验应变量旋转

 1createorreplacefunction get_request_code returnvarchar2AS 2 3-- 应变量的功用:必然发生的大发牢骚定货单 4        v_mca_no   mcode_apply.mca_no%TYPE;
 5 6CURSOR get_max_mca_no IS 7SELECTmax(substr(mca_no, 11, 3)) -- 最大总额的决定,最大的三位被截获,如:001、002...00n 8FROM  mcode_apply 
 9WHERE  substr(mca_no, 3, 8) = to_char(sysdate, ''YYYYMMDD''); -- 截取号码[如:20170422】,to_char():在四周角色替换的时期,即string典型。1011         v_requestcode VARCHAR2(3);
1213BEGIN14OPEN get_max_mca_no; 
15FETCH get_max_mca_no INTO v_requestcode; 
16CLOSE get_max_mca_no;
1718IF v_requestcode ISNULLTHEN19        v_requestcode := NVL(v_requestcode, 0);  -- NVL()应变量:当v_requestcode是空的,以0作为值20ENDIF;
2122        v_requestcode := lpad(v_requestcode +1, 3, ''0'');  -- 游标截取值加1,与填写左0,大发牢骚 001,002...00n 三位数的 序号; Lpad()应变量:向左填空23        v_mca_no :=''MA''|| to_char(sysdate, ''YYYYMMDD'') || v_requestcode;  -- 终极涂单号(如:MA20170422001;MA20170422002;...MA2017042200N )2425RETURN''0~,''|| v_mca_no; 
2627END ;

 注:假如你要与实验有关的的功用,请生殖到Oracle数据库,右键单击应变量名 get_request_code实验,记着与实验有关的表指定和在实地工作的对应到本人的设置中

发表评论

电子邮件地址不会被公开。 必填项已用*标注