首页 > 数据库 > Oracle > 正文

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

青灯夜游
发布: 2022-02-14 12:47:05
原创
59182人浏览过
在oracle中,可以利用Instr()和substr()函数来截取字符串中的一部分字符,语法为“SUBSTR('需要截取的字符串',截取开始位置, INSTR('需要截取的字符串,'','查找开始位置','第几次出现')-1) ”。

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

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

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

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

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

其语法为:

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

其中

  • sourceString代表源字符串;

  • destString代表想聪源字符串中查找的子串;

  • start代表查找的开始位置,该参数可选的,默认为1;

  • appearPosition代表想从源字符中查找出第几次出现的destString,该参数也是可选的,默认为1;

如果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)  

Stable Diffusion 2.1 Demo
Stable Diffusion 2.1 Demo

最新体验版 Stable Diffusion 2.1

Stable Diffusion 2.1 Demo 101
查看详情 Stable Diffusion 2.1 Demo
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中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号