博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle截取字符串区间段的一部分字符串
阅读量:6940 次
发布时间:2019-06-27

本文共 2754 字,大约阅读时间需要 9 分钟。

Oracle SQL中实现indexOf和lastIndexOf功能,substr和instr用法  博客分类: oraclePL/SQL instrsubstrlastindexofindexoforacle .Oracle SQL中实现indexOf和lastIndexOf功能 Oracle, SQL, indexOf, lastIndexOf 今天遇到一个问题,需要将一个格式为1_2_3这样的字符串拆解组成1_3的串,并用SQL更新数据库。 在Oracel中,可以用substr和INSTR函数来实现此功能。 substr的第三个参数为1时,实现的是indexOf功能。 substr的第三个参数为-1时,实现的是lastIndexOf功能。 最后的SQL语句如下: update ebms_data_table t set t.ref_name = substr(t.name, 0, INSTR(t.name, '_', 1, 1))|| substr(t.name, INSTR(t.name, '_', -1, 1)+1); (二) 再给大家举个例子: select        i1.name,        instr(i1.name, '司', 1) + 1 as 公司出现的位置,        instr(i1.name, '分公司', 1) as 分公司出现的位置,        substr(i1.name,               instr(i1.name, '司', 1) + 1,               ((instr(i1.name, '分公司', 1)) - (instr(i1.name, '司', 1) + 1))) as subname   from insurance_company1 i1  where i1.name like '%股份有限公司%分公司'    and i1.upcustomer like '%股份有限公司' 查询结果如下:         名字全称                             司出现的位置        分公司出现的位置          subName 1   天安保险股份有限公司伊犁分公司                   11             13                     伊犁 2   中国大地财产保险股份有限公司新疆分公司	        15             17                 新疆 3   中国平安财产保险股份有限公司乌苏分公司	        15             17                     乌苏 4   中国平安财产保险股份有限公司新疆分公司	        15             17                     新疆 5   中国平安人寿保险股份有限公司新疆分公司	        15             17                     新疆 6   中国人民财产保险股份有限公司阿克苏地区分公司	15             20                     阿克苏地区 7   中国人民财产保险股份有限公司阿勒泰地区分公司	15             20                     阿勒泰地区 8   中国人民财产保险股份有限公司昌吉回族自治州分公司    15             22                     昌吉回族自治州 后边的subName就是我成功截取的名字,就是我要截取的全名字的中后边不同分公司的字段,目的就是为了要获取不同的字段,然后进行分析。 这里是substr和instr的综合使用。 substr(stirng1,strat,length);截取功能; 解析一下:string1是你要截取的字符串,strat是要开始截取的位置,length是你要截取多少个字符串。 instr(string1,string2,end);是检索功能, 解析一下:string1是你要检索的字符串,string2是你在string1中要查找的字符串,end的意思1代表从字符串的开始检索,-1代表中字符串的末尾开始检索。具体返回值   如果   string1 为零长度   InStr返回 0   string1 为 Null   InStr返回 Null   string2 为零长度   InStr返回 Start 的值   string2 为 Null   InStr返回 Null   string2 找不到   InStr返回 0   在 string1 中找到string2   InStr返回 找到的位置   start 值 > len(string1 )值   InStr返回 0; 当instr将我们要检索字段的位置找到后,即返回所在的位置数据,我们就是可以利用substr函数进行截取,length就是我们我们检索出来的数字的差额。

select

       i1.fdisplayname,
       instr(i1.fdisplayname, '事',1,1)+1 as 事,
       instr(i1.fdisplayname, '业',1,2)+1 as 业,
       substr(i1.fdisplayname,
              instr(i1.fdisplayname, '事',1,1)+1,
              ((instr(i1.fdisplayname, '业',1,2)) - (instr(i1.fdisplayname, '事',1,1)+1))) as subname
  from SHENZHENJM1222.B i1

 

分三步:

1.

select

       i1.fdisplayname,
       instr(i1.fdisplayname, '事',1,1)+1 as 事,
       instr(i1.fdisplayname, '业',1,2)+1 as 业              
  from SHENZHENJM1222.B i1

 

第二部:

 

select
substr(i1.fdisplayname,
instr(i1.fdisplayname, '事',1,1)+1, ((instr(i1.fdisplayname, '业',1,2)+1) - (instr(i1.fdisplayname, '事',1,1)+1)))
as subname from SHENZHENJM1222.B i1

如果想改变边界值,只需+后面的数字即可

 

 

转载地址:http://xuinl.baihongyu.com/

你可能感兴趣的文章
创业进行时,冒险、创新、坚持,你处在哪个阶段?
查看>>
邀您共赴数据库学术顶会ICDE 2019——阿里云专场 零距离接触达摩院数据库“最强大脑”...
查看>>
Unity自动保存场景脚本
查看>>
Java springboot B2B2C o2o多用户商城 springcloud架构(十六)用restTemplate消费服务
查看>>
5种必知的大数据处理框架技术
查看>>
详解java开发环境的配置
查看>>
随记:Linux更改yum源
查看>>
iOS生成二维码
查看>>
DNS基本工作原理,及正反向解析和主从同步测试
查看>>
安装Nginx
查看>>
在树莓派2/B+上安装Python和OpenCV
查看>>
有意思的python***案例
查看>>
PHP Warning 报“timezone”错
查看>>
思科CCIE证书真伪、有效性查询方式
查看>>
局域网内搭建 本地yum 源
查看>>
golang: 常用数据类型底层结构分析
查看>>
How to Set Cores-Per-Socket Parameter for a Virtual Machine
查看>>
我的友情链接
查看>>
如何做出一个弹出窗口
查看>>
solidity 0.5.7简明教程
查看>>