Oracle中字符串截取最全方法总结

Oracle中字符串截取最全方法总结substr函数:截取字符串 语法:SUBSTR(string,start,[length])string:表示源字符串,即要截取的字符串。start:开始位置,从1开始查找。如果start是负数,则从string字符串末尾开始算起。length:可选项,表示截取字符串长度。示例:SELECTSUBSTR(‘HelloSQL!’,1)FROMdual…

大家好,又见面了,我是你们的朋友全栈君。

  • substr 函数:截取字符串

语法:SUBSTR(string,start, [length])

string:表示源字符串,即要截取的字符串。

start:开始位置,从1开始查找。如果start是负数,则从string字符串末尾开始算起

length:可选项,表示截取字符串长度。

示例

SELECT SUBSTR('Hello SQL!', 1) FROM dual     --截取所有字符串,返回'Hello SQL!'
SELECT SUBSTR('Hello SQL!', 2) FROM dual     --从第2个字符开始,截取到末尾。返回'ello SQL!'
SELECT SUBSTR('Hello SQL!', -4) FROM dual    --从倒数第4个字符开始,截取到末尾。返回'SQL!'
SELECT SUBSTR('Hello SQL!', 3, 6) FROM dual  --从第3个字符开始,截取6个字符。返回'llo SQ'
SELECT SUBSTR('Hello SQL!', -4, 3) FROM dual --从倒数第4个字符开始,截取3个字符。返回'SQL'
  • instr 函数:返回子字符串在源字符串中的位置

语法:INSTR(string,child_string,[start],[show_time])

string:表示源字符串。

child_string:子字符串,即要查找的字符串。

start:可选项,开始位置,默认1开始。如果为负数,则从右向左检索。

show_time:可选项,表示子字符串第几次出现在源字符串当中,默认1次,负数则报错

示例

--表示从源字符串'city_company_staff'中第1个字符开始查找子字符串'_'第1次出现的位置
SELECT INSTR('city_company_staff', '_') FROM dual    --返回5

--表示从源字符串'city_company_staff'中第5个字符开始查找子字符串'_'第1次出现的位置
SELECT INSTR('city_company_staff', '_', 5) FROM dual    --返回5

--表示从源字符串'city_company_staff'中第5个字符开始查找子字符串'_'第1次出现的位置
SELECT INSTR('city_company_staff', '_', 5, 1) FROM dual    --返回5

--表示从源字符串'city_company_staff'中第3个字符开始查找子字符串'_'第2次出现的位置
SELECT INSTR('city_company_staff', '_', 3, 2) FROM dual    --返回13

--start参数为-1,从右向左检索,查找'_'字符串在源字符串中第1次出现的位置
SELECT INSTR('city_company_staff', '_', -1, 1) FROM dual    --返回13

--start参数为-6,从右向左检索,查找'_'字符串在源字符串中第2次出现的位置
SELECT INSTR('city_company_staff', '_', -6, 2) FROM dual    --返回5
  • substr 函数结合 instr 函数截取字符串

现有需求:数据查询处理需要对code进行”拆分”

code命名规则类似:城市_所属公司_员工职位_员工姓名

其中,城市、公司、职位、姓民字符串长度不固定,由于字符串长度不固定,只使用substr函数无法实现需求,需配合instr函数定位到字符’_’的位置,然后使用substr函数进行截取。详细见下面例子。

表数据如下:

SOURCE_CODE
BJ_BAIDU_CEO_LY
SH_BOKE_MANAGER_LWX
HRB_WM_CASHIER_OYZY

获取城市

SELECT
	SUBSTR (SOURCE_CODE, 1, INSTR (SOURCE_CODE, '_', 1, 1) - 1) AS CITY
FROM
	TABLE_CODE_TEST

结果

Oracle中字符串截取最全方法总结

解释:此处截取源字符串SOURCE_CODE,从第1个字符开始,由于代表城市的code长度不固定,我们无法确定截取几个字符,所以使用instr函数判断第一个’_’字符的位置,进而确定每个SOURCE_CODE截取几个字符串。

那为什么减1呢

是因为INSTR (SOURCE_CODE, ‘_’, 1, 1)获取的是源字符串中’_’字符第一次出现的位置,再减1就得出了CITY字符个数。

获取公司:

SELECT
	SUBSTR (
		SOURCE_CODE, 
		INSTR (SOURCE_CODE, '_', 1, 1) + 1, 
		INSTR (SOURCE_CODE, '_', 1, 2) - INSTR (SOURCE_CODE, '_', 1, 1)-1
	) AS COMPANY
FROM
	TABLE_CODE_TEST

结果:

Oracle中字符串截取最全方法总结

解释:截取源字符串,从(第一个’_’出现位置+1)开始,截取个数为:第2个’_’出现位置减去第1个’_’出现位置,此时还多了一个下划线’_’,再减去1即可得到代表公司字符串。

获取姓名:

SELECT
	SUBSTR (SOURCE_CODE, INSTR (SOURCE_CODE, '_', 1, 3) + 1) AS STF_NAME
FROM
	TABLE_CODE_TEST

结果:

Oracle中字符串截取最全方法总结

解释:截取源字符串,从(’_’第3次出现位置+1)开始截取,截取到末尾。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142123.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微信API接口_微信下载

    微信API接口_微信下载整理一下微信API文档,以备未来开发,本文API内容为常用的微信开发API整理,内容有待完善……packagecn.vision.weixindemo.utils.base.API;publicclassWeiXin_API{//授权类/***获取授权Token*https请求方式:GET*字段…

    2022年10月2日
    0
  • 旋转机械振动的基本特性分析图_旋转机械振动监测及故障诊断

    旋转机械振动的基本特性分析图_旋转机械振动监测及故障诊断旋转机械的主要功能是由旋转部件来完成的,转子是其最主要的部件。旋转机械发生故障的主要特征是机器伴有异常的振动和噪声,其振动信号从幅域、频域和时域反映了机器的故障信息。因此,了解旋转机械在故障状态下的振动机理,对于监测机器的运行状态和提高诊断故障的准确率都非常重要。一、转子振动的基本特性旋转机械的主要部件是转子,其结构型式虽然多种多样,但对一些简单的旋转机械来说,为分析和计算方便,一般都将转

    2022年8月31日
    4
  • microsoft edge无法连接到代理服务器(ie代理服务器错误)

    电脑里有谷歌浏览器也有系统自带的Microsoftedge浏览器,谷歌浏览器可以上网,edge不能上网,出现无法连接到代理服务器的字样。解决方法:方法1、直接根据当前浏览器页面中的“打开代理设置”,(应该是叫这个名字),直接跳到代理界面,把“自动检测设置”按钮打开。重启浏览器。就OK了。 方法2、打开浏览器的设置按钮,在最后一行找到“设置”,点进去后,找到“高级设置”,点击“查看高级设置”,在找…

    2022年4月11日
    678
  • arraylist遍历 并删除_js遍历list对象

    arraylist遍历 并删除_js遍历list对象//第一种遍历 ArrayList 对象的方法foreach(object o in al){Console.Write(o.ToString()+” “);}//第二种遍历 ArrayList 对象的方法IEnumerator ie=al.GetEnumerator();while(ie.MoveNext()){Console.Write(ie.Curret.ToString()+” “);

    2022年9月29日
    0
  • 罗技k380无线键盘怎么连接电脑_罗技k480切换输入法

    罗技k380无线键盘怎么连接电脑_罗技k480切换输入法一、核实蓝牙键盘是否开启:蓝牙键盘有单独的开关,若蓝牙键盘没有打开,则无法使用。开启方法:键盘开机键在键盘的左侧位置,将开关向左移动到ON即可开启,二、核实蓝牙键盘是否有电:蓝牙键盘是需要单独充电的设备,若蓝牙键盘没有电,则无法使用。充电方法:在键盘左侧位置有充电端口,将充电器连接到此端口即可为键盘充电注:键盘充电时,电源指示灯会变为红色,充电完毕后,电源指示灯会变为蓝色。三、将键盘与平板电脑重新…

    2022年10月15日
    0
  • linux清屏命令[通俗易懂]

    1)clear这个命令将会刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息。一般都会用这个命令。(2)reset这个命令将完全刷新终端屏幕,之前的终端输入操作信息将都会被清空,这样虽然比较清爽,但整个命令过程速度有点慢,使用较少。(3)另外介绍一个用别名来使用清屏命令的方法,如下:[root@localhost~]$aliascls=‘clea…

    2022年4月13日
    84

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号