oracle中的substr()函數(shù)用法實例詳解
1.substr函數(shù)格式 (俗稱:字符截取函數(shù))
格式1: substr(string string, int a, int b);
格式2:substr(string string, int a) ;
解析:
格式1:
1、string 需要截取的字符串
2、a 截取字符串的開始位置(注:當a等于0或1時,都是從第一位開始截?。?br /> 3、b 要截取的字符串的長度
格式2:
1、string 需要截取的字符串
2、a 可以理解為從第a個字符開始截取后面所有的字符串。
2.實例解析
格式1:
select substr('HelloWorld',0,3) value from dual; //返回結果:Hel,截取從“H”開始3個字符
select substr('HelloWorld',1,3) value from dual; //返回結果:Hel,截取從“H”開始3個字符
select substr('HelloWorld',2,3) value from dual; //返回結果:ell,截取從“e”開始3個字符
select substr('HelloWorld',0,100) value from dual; //返回結果:HelloWorld,100雖然超出預處理的字符串最長度,但不會影響返回結果,系統(tǒng)按預處理字符串最大數(shù)量返回。
select substr('HelloWorld',5,3) value from dual; //返回結果:oWo
select substr('Hello World',5,3) value from dual; //返回結果:o W (中間的空格也算一個字符串,結果是:o空格W)
select substr('HelloWorld',-1,3) value from dual; //返回結果:d (從后面倒數(shù)第一位開始往后取1個字符,而不是3個。原因:下面紅色 第三個注解)
select substr('HelloWorld',-2,3) value from dual; //返回結果:ld (從后面倒數(shù)第二位開始往后取2個字符,而不是3個。原因:下面紅色 第三個注解)
select substr('HelloWorld',-3,3) value from dual; //返回結果:rld (從后面倒數(shù)第三位開始往后取3個字符)
select substr('HelloWorld',-4,3) value from dual; //返回結果:orl (從后面倒數(shù)第四位開始往后取3個字符)
(注:當a等于0或1時,都是從第一位開始截取(如:1和2))
(注:假如HelloWorld之間有空格,那么空格也將算在里面(如:5和6))
(注:雖然7、8、9、10截取的都是3個字符,結果卻不是3 個字符; 只要 |a| ≤ b,取a的個數(shù)(如:7、8、9);當 |a| ≥ b時,才取b的個數(shù),由a決定截取位置(如:9和10))
格式2:
select substr('HelloWorld',0) value from dual; //返回結果:HelloWorld,截取所有字符
select substr('HelloWorld',1) value from dual; //返回結果:HelloWorld,截取所有字符
select substr('HelloWorld',2) value from dual; //返回結果:elloWorld,截取從“e”開始之后所有字符
select substr('HelloWorld',3) value from dual; //返回結果:lloWorld,截取從“l(fā)”開始之后所有字符
select substr('HelloWorld',-1) value from dual; //返回結果:d,從最后一個“d”開始 往回截取1個字符
select substr('HelloWorld',-2) value from dual; //返回結果:ld,從最后一個“d”開始 往回截取2個字符
select substr('HelloWorld',-3) value from dual; //返回結果:rld,從最后一個“d”開始 往回截取3個字符
(注:當只有兩個參數(shù)時;不管是負幾,都是從最后一個開始 往回截取(如:15、16、17))
3、實例截圖:
例1:

例2:

例5:

例6:

例7:

例8:

4、完整函數(shù)實例
create or replace function get_request_code return varchar2 AS
-- 函數(shù)的作用:自動生成單號
v_mca_no mcode_apply.mca_no%TYPE; -- 新建一個形參v_mca_no,是以mcode_apply表中的mca_no字段的類型相同
CURSOR get_max_mca_no IS -- get_max_mca_no 游標
SELECT max(substr(mca_no, 11, 3)) -- 查出的最大單號,截取出最后三位,如:001、002...00n
FROM mcode_apply
WHERE substr(mca_no, 3, 8) = to_char(sysdate, 'YYYYMMDD'); -- 截取單號【如:20170422】,to_char():把時間轉換為字符型,即string類型。
v_requestcode VARCHAR2(3); -- 形參(參數(shù))
BEGIN
OPEN get_max_mca_no;
FETCH get_max_mca_no INTO v_requestcode; -- 把游標中查到的值,賦值給 v_requestcode 形參
CLOSE get_max_mca_no;
IF v_requestcode IS NULL THEN
v_requestcode := NVL(v_requestcode, 0); -- NVL()函數(shù):當v_requestcode為NULL時,取0作為值
END IF;
v_requestcode:= lpad(v_requestcode+1,3,'0'); -- 將游標中截取到的值加1,然后向左填充0,生成 001,002...00n 三位數(shù)的 序號; lpad()函數(shù):向左填充
v_mca_no:='MA'||to_char(sysdate,'YYYYMMDD')||v_requestcode; -- 最終生成的申請單號(如:MA20170422001;MA20170422002;...MA2017042200N )
RETURN '0~,'||v_mca_no;
END ;
注:如要測試該函數(shù),請復制到oracle數(shù)據(jù)庫中,右擊函數(shù)名 “get_request_code” 選擇test測試,測試時記得把相應的表名及字段換成自己建立的
附:Oracle獲取字符串的最后幾位
substr(字符串,-10)
Oracle 字符串函數(shù) substr(字符串,截取開始位置,截取長度)
1. 如果最后一個截取長度參數(shù)為空,則表示從截取開始位置起截到最末
2. 如果截取開始位置 為大于0的數(shù)字,則表示從字符串左數(shù)幾位開始
3. 如果截取開始位置 為小于0的數(shù)字,則表示從字符串右數(shù)幾位開始
總結
到此這篇關于oracle中substr()函數(shù)用法詳解的文章就介紹到這了,更多相關oracle substr()函數(shù)詳解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- oracle截取字符(substr)檢索字符位置(instr)示例介紹
- Oracle通過正則表達式分割字符串 REGEXP_SUBSTR的代碼詳解
- oracle中l(wèi)ength、lengthb、substr、substrb函數(shù)用法介紹
- Oracle中instr和substr存儲過程詳解
- Oracle的substr和instr函數(shù)簡單用法
- Oracle中的INSTR,NVL和SUBSTR函數(shù)的用法詳解
- Oracle中instr函數(shù)與substr函數(shù)及自制分割函數(shù)詳解
- oracle數(shù)據(jù)庫截取字符串substr函數(shù)使用舉例
相關文章
ORALCE?substr函數(shù)及substrb與字符集關系詳解
這篇文章主要介紹了ORALCE?substr函數(shù)及substrb與字符集關系,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07
Oracle 11g數(shù)據(jù)庫使用expdp每周進行數(shù)據(jù)備份并上傳到備份服務器
這篇文章主要介紹了Oracle 11g數(shù)據(jù)庫使用expdp每周進行數(shù)據(jù)備份并上傳到備份服務器,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06
講解Oracle數(shù)據(jù)庫中的數(shù)據(jù)字典及相關SQL查詢用法
這篇文章主要介紹了Oracle數(shù)據(jù)庫中的數(shù)據(jù)字典及相關SQL查詢用法,是Oracle入門學習中的基礎知識,需要的朋友可以參考下2016-03-03
oracle關聯(lián)查詢報invalid number錯誤的解決方法
這篇文章主要介紹了oracle關聯(lián)查詢報invalid number錯誤的解決方法,文中通過代碼示例和圖文結合的方式講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-09-09

