oracle 字符串截取substr和instr

2018-02-12 by 翻滚吧核桃

    SUBSTR(string,start_position,[length])    求子字符串,返回字符串
    解释:string 元字符串
           start_position   开始位置(从0开始)
           length 可选项,子字符串的个数
    For example:

    位置是从开始
    substr("ABCDEFG", 0); //返回:ABCDEFG,截取所有字符 

    substr("ABCDEFG", 1); //返回:ABCDEFG,截取所有字符 

    substr("ABCDEFG", -0); //返回:ABCDEFG,截取所有字符  -0=0,都是从左边截

    substr("ABCDEFG", -0,1); //返回:A,从左截1位

    substr("ABCDEFG", 2); //返回:CDEFG,截取从C开始之后所有字符 

    substr("ABCDEFG", -2); //返回:FG,从右边数第二位开始截取

    substr("ABCDEFG", -2,1); //返回:F,从右边数第二位开始截取1位长度
    substr("ABCDEFG", 0, 3); //返回:ABC,截取从A开始3个字符 
    substr("ABCDEFG", 0, 100); //返回:ABCDEFG,100虽然超出预处理的字符串最长度,但不会影响返回结果,系统按预处理字符串最大数量返回。 
    substr("ABCDEFG", -3); //返回:EFG,注意参数-3,为负值时表示从尾部开始算起,字符串排列位置不变。

 

 

   2. INSTR(string,subString,position,ocurrence)查找字符串位置 从1开始
    解释:string:源字符串
            subString:要查找的子字符串
         position:查找开始位置(从1开始) 不可以是0,会找不见,-是从右边找

    比如:-2 从右边第二位开始找,

    ocurrence:源字符串中第几次出现的子字符串 不加这个参数默认是1

    substr("ABCDEFG", -2,1); //返回:F,从右边数第二位开始截取1位长度

    select instr('ABCDEFGABCDEFG','B',2) from dual   返回2

    select instr('ABCDEFGABCDEFG','B',3) from dual   返回9

    select instr('ABCDEFGABCDEFG','B',-1) from dual   返回9

    select instr('ABCDEFGABCDEFG','B',-1,2) from dual 返回2

    select instr('ABCDEFGABCDEFG','B',1,2) from dual  返回9

 

 


      For example:   取A001HZJKQS   中间的001

substr('A001HZJKQS',2,instr('A001HZJKQS','HZJKQS',1)-2)

 

 参考贴:  https://www.cnblogs.com/cyblogs/p/5983612.html

最新更新:

第七城市

栏目导航(关闭)