• 技术文章 >数据库 >Oracle

    oracle怎么截取字符串中的一部分字符

    青灯夜游青灯夜游2022-02-14 12:47:05原创673

    在oracle中,可以利用Instr()和substr()函数来截取字符串中的一部分字符,语法为“SUBSTR('需要截取的字符串',截取开始位置, INSTR('需要截取的字符串,'','查找开始位置','第几次出现')-1) ”。

    本教程操作环境:Windows7系统、Oracle 11g版、Dell G3电脑。

    oracle截取字段中的部分字符串

    使用Oracle中Instr()和substr()函数

    在Oracle中可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符。

    其语法为:

    instr(sourceString,destString,start,appearPosition).   
    instr('源字符串' , '目标字符串' ,'开始位置','第几次出现')

    其中

    如果start的值为负数,那么代表从右往左进行查找,但是位置数据仍然从左向右计算。

    返回值为:查找到的字符串的位置。

    对于instr函数,我们经常这样使用:从一个字符串中查找指定子串的位置。例如:

    SQL> select instr('yuechaotianyuechao','ao') position from dual;
     POSITION
     ----------
     6

    从第7个字符开始搜索

    SQL> select instr('yuechaotianyuechao','ao', 7) position from dual;
     POSITION
     ----------
     17

    从第1个字符开始,搜索第2次出现子串的位置

    SQL> select instr('yuechaotianyuechao','ao', 1, 2) position from dual;
     POSITION
     ----------
     17

    对于instr函数,我们经常这样使用:从一个字符串中查找指定子串的位置。例如:

    SQL> select instr('abcdefgh','de') position from dual; 
    POSITION 
    ---------- 
    4

    从1开始算 d排第四所以返回4

    SQL>select instr('abcdefghbc','bc',3) position from dual; 
    POSITION 
    ---------- 
    9

    从第3个字符开始算起 第3个字符是c,所以从3开始以后的字符串找查找bc,返回9

    substr函数的用法,取得字符串中指定起始位置和长度的字符串 ,默认是从起始位置到结束的子串。

     substr( string, start_position, [ length ] )       substr('目标字符串',开始位置,长度)

    如:

          substr('This is a test', 6, 2)     would return 'is' 
          substr('This is a test', 6)     would return 'is a test' 
          substr('TechOnTheNet', -3, 3)     would return 'Net' 
          substr('TechOnTheNet', -6, 3)     would return 'The'select substr('Thisisatest', -4, 2) value from dual

    SUBSTR()函数  

    1.用处:是从给定的字符表达式或备注字段中返回一个子字符串。   

    2.语法格式:

    substr(string string, int a, int b);
    substr(string string, int a) ; 

    格式1:

    1、string 需要截取的字符串

    2、a 截取字符串的开始位置(注:当a等于0或1时,都是从第一位开始截取)

    3、b 要截取的字符串的长度

    格式2:

    1、string 需要截取的字符串

    2、a 可以理解为从第a个字符开始截取后面所有的字符串。

    oracle截取字符串

    将 C3411.907w15 截取点号之前的字符串 C3411 SUBSTR ('C3411.907w15', 0, INSTR ('C3411.907w15, '.', 1, 1) - 1)

    SELECT SUBSTR ('C3411.907w15', 0, INSTR ('C3411.907w15, '.', 1, 1) - 1)
      FROM DUAL

    将 C3411.907w15 截取点号之后 的字符串 907w15 SUBSTR ('C3411.907w15', INSTR ('C3411.907w15', '.', 1, 1)+1)

    SELECT SUBSTR ('C3411.907w15', INSTR ('C3411.907w15', '.', 1, 1)+1)
      FROM DUAL

    项目应用实例:

    原始字符串:

    原始字段中存在7个“_”,我现在只想取出最后一个“_”后面的字符串,该怎么解决呢?

    分两步:

    第一步,通过Instr()函数,找到第7个“_”字符:

    select instr('Q房网集团_经纪事业部_华南区_深圳世华_营业部_南山前海区_前海中心片区_前海五分店','_', 1, 7) fdisplayname from SHENZHENJM1222.B

    或者:

    select instr('Q房网集团_经纪事业部_华南区_深圳世华_营业部_南山前海区_前海中心片区_前海五分店', '_', -1, 1) fdisplayname FROM SHENZHENJM1222.B

    两者效果一样,下面的-1,表示从右边开始算起始字符,1表示获取第一个“_”

    获取到的结果如图:

    第2步,通过substr()函数,取出所需要的字段:

    select substr(fdisplayname,instr(fdisplayname,'_',-1,1)+1) fdisplayname from SHENZHENJM1222.B

    fdisplayname:代表字段名,相当于元字符串

    重点介绍一下+1

    +1表示在目标字符串“_”后的第一个字符串开始截取

    下面看一下不同的数字的情况:

    select substr(fdisplayname,instr(fdisplayname,'_',-1,1)+1) fdisplayname from SHENZHENJM1222.B

    在来看一下instr(fdisplayname,'_',-1,1)中的1是啥意思:

    推荐教程:《Oracle教程

    以上就是oracle怎么截取字符串中的一部分字符的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:oracle 截取字符串
    上一篇:总结整理Oracle的添加语句(总结分享) 下一篇:oracle如何查询死锁
    PHP编程就业班

    相关文章推荐

    • oracle怎样修改归档模式• oracle中to char转换的用法是什么• 怎样查看oracle在linux的安装目录• oracle怎样增加约束• oracle归档日志怎么关闭

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网