欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

oracle中的substr()函數(shù)用法實(shí)例詳解

 更新時(shí)間:2023年11月25日 10:49:02   作者:pymxzk  
這篇文章主要給大家介紹了關(guān)于oracle中substr()函數(shù)用法的相關(guān)資料,substr函數(shù)是用于字符串的截取的函數(shù),只適用于string類型,并不適用于字符數(shù)組,需要的朋友可以參考下

1.substr函數(shù)格式 (俗稱:字符截取函數(shù))

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

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

解析:

格式1:
    1、string 需要截取的字符串
    2、a 截取字符串的開始位置(注:當(dāng)a等于0或1時(shí),都是從第一位開始截?。?br />    3、b 要截取的字符串的長度

格式2:
    1、string 需要截取的字符串
    2、a 可以理解為從第a個(gè)字符開始截取后面所有的字符串。

2.實(shí)例解析

格式1:

select substr('HelloWorld',0,3) value from dual; //返回結(jié)果:Hel,截取從“H”開始3個(gè)字符
select substr('HelloWorld',1,3) value from dual; //返回結(jié)果:Hel,截取從“H”開始3個(gè)字符
select substr('HelloWorld',2,3) value from dual; //返回結(jié)果:ell,截取從“e”開始3個(gè)字符
select substr('HelloWorld',0,100) value from dual; //返回結(jié)果:HelloWorld,100雖然超出預(yù)處理的字符串最長度,但不會(huì)影響返回結(jié)果,系統(tǒng)按預(yù)處理字符串最大數(shù)量返回。
select substr('HelloWorld',5,3) value from dual; //返回結(jié)果:oWo
select substr('Hello World',5,3) value from dual; //返回結(jié)果:o W (中間的空格也算一個(gè)字符串,結(jié)果是:o空格W)
select substr('HelloWorld',-1,3) value from dual; //返回結(jié)果:d (從后面倒數(shù)第一位開始往后取1個(gè)字符,而不是3個(gè)。原因:下面紅色 第三個(gè)注解)
select substr('HelloWorld',-2,3) value from dual; //返回結(jié)果:ld (從后面倒數(shù)第二位開始往后取2個(gè)字符,而不是3個(gè)。原因:下面紅色 第三個(gè)注解)
select substr('HelloWorld',-3,3) value from dual; //返回結(jié)果:rld (從后面倒數(shù)第三位開始往后取3個(gè)字符)
select substr('HelloWorld',-4,3) value from dual; //返回結(jié)果:orl (從后面倒數(shù)第四位開始往后取3個(gè)字符)

(注:當(dāng)a等于0或1時(shí),都是從第一位開始截取(如:1和2))
(注:假如HelloWorld之間有空格,那么空格也將算在里面(如:5和6))
(注:雖然7、8、9、10截取的都是3個(gè)字符,結(jié)果卻不是3 個(gè)字符; 只要 |a| ≤ b,取a的個(gè)數(shù)(如:7、8、9);當(dāng) |a| ≥ b時(shí),才取b的個(gè)數(shù),由a決定截取位置(如:9和10))

格式2:

select substr('HelloWorld',0) value from dual;  //返回結(jié)果:HelloWorld,截取所有字符
select substr('HelloWorld',1) value from dual;  //返回結(jié)果:HelloWorld,截取所有字符
select substr('HelloWorld',2) value from dual;  //返回結(jié)果:elloWorld,截取從“e”開始之后所有字符
select substr('HelloWorld',3) value from dual;  //返回結(jié)果:lloWorld,截取從“l(fā)”開始之后所有字符
select substr('HelloWorld',-1) value from dual;  //返回結(jié)果:d,從最后一個(gè)“d”開始 往回截取1個(gè)字符
select substr('HelloWorld',-2) value from dual;  //返回結(jié)果:ld,從最后一個(gè)“d”開始 往回截取2個(gè)字符
select substr('HelloWorld',-3) value from dual;  //返回結(jié)果:rld,從最后一個(gè)“d”開始 往回截取3個(gè)字符

(注:當(dāng)只有兩個(gè)參數(shù)時(shí);不管是負(fù)幾,都是從最后一個(gè)開始 往回截取(如:15、16、17))

3、實(shí)例截圖:

例1:

例2:

例5:

例6:

例7:

例8:

4、完整函數(shù)實(shí)例

create or replace function get_request_code return varchar2 AS

 -- 函數(shù)的作用:自動(dòng)生成單號(hào)
 v_mca_no   mcode_apply.mca_no%TYPE; -- 新建一個(gè)形參v_mca_no,是以mcode_apply表中的mca_no字段的類型相同

 CURSOR get_max_mca_no IS -- get_max_mca_no 游標(biāo)
     SELECT max(substr(mca_no, 11, 3)) -- 查出的最大單號(hào),截取出最后三位,如:001、002...00n
     FROM  mcode_apply
     WHERE  substr(mca_no, 3, 8) = to_char(sysdate, 'YYYYMMDD'); -- 截取單號(hào)【如:20170422】,to_char():把時(shí)間轉(zhuǎn)換為字符型,即string類型。

 v_requestcode VARCHAR2(3); -- 形參(參數(shù))

 BEGIN
    OPEN get_max_mca_no;
    FETCH get_max_mca_no INTO v_requestcode; -- 把游標(biāo)中查到的值,賦值給 v_requestcode 形參
    CLOSE get_max_mca_no;

 IF v_requestcode IS NULL THEN
   v_requestcode := NVL(v_requestcode, 0);  -- NVL()函數(shù):當(dāng)v_requestcode為NULL時(shí),取0作為值
 END IF;

   v_requestcode:= lpad(v_requestcode+1,3,'0'); -- 將游標(biāo)中截取到的值加1,然后向左填充0,生成 001,002...00n 三位數(shù)的 序號(hào); lpad()函數(shù):向左填充
   v_mca_no:='MA'||to_char(sysdate,'YYYYMMDD')||v_requestcode; -- 最終生成的申請(qǐng)單號(hào)(如:MA20170422001;MA20170422002;...MA2017042200N )

 RETURN '0~,'||v_mca_no;

END ;

注:如要測試該函數(shù),請(qǐng)復(fù)制到oracle數(shù)據(jù)庫中,右擊函數(shù)名 “get_request_code” 選擇test測試,測試時(shí)記得把相應(yīng)的表名及字段換成自己建立的

附:Oracle獲取字符串的最后幾位

substr(字符串,-10)
Oracle 字符串函數(shù) substr(字符串,截取開始位置,截取長度)
1. 如果最后一個(gè)截取長度參數(shù)為空,則表示從截取開始位置起截到最末
2. 如果截取開始位置 為大于0的數(shù)字,則表示從字符串左數(shù)幾位開始
3. 如果截取開始位置 為小于0的數(shù)字,則表示從字符串右數(shù)幾位開始

總結(jié)

到此這篇關(guān)于oracle中substr()函數(shù)用法詳解的文章就介紹到這了,更多相關(guān)oracle substr()函數(shù)詳解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論