千家信息网

Oracle中字符串截取常用方法总结【推荐】

发表于:2024-11-15 作者:千家信息网编辑
千家信息网最后更新 2024年11月15日,substr 函数:截取字符串语法:SUBSTR(string,start, [length])string:表示源字符串,即要截取的字符串。start:开始位置,从1开始查找。如果start是负数,
千家信息网最后更新 2024年11月15日Oracle中字符串截取常用方法总结【推荐】

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 CITYFROM TABLE_CODE_TEST

结果:

BJ

SH

HRB

解释:此处截取源字符串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 COMPANYFROM TABLE_CODE_TEST

结果:

COMPANY

BOKE

WM

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

获取姓名:

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

结果:

LY

LWZ

OYZY

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

总结

以上所述是小编给大家介绍的Oracle中字符串截取常用方法总结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

字符 字符串 位置 函数 公司 城市 末尾 长度 结果 负数 检索 解释 个数 代表 参数 员工 姓名 数据 示例 职位 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库查询所有选课学生信息 数据库突然断电连接不上 网络安全挑战的计划 网络安全ppt 宣传 苏州营销软件开发管理 学软件开发烧脑吗 救援服务器安全码 淮海工学院网络安全实验报告 金州租房网络安全 中国网络安全的发展现状 电脑服务器单项备用不间断电源 我要查一下网络安全手抄报 拉卡拉怎么连不上服务器 上海个性化网络技术转让 黄浦区智能化软件开发管理系统 南京招商帮网络技术有限公司如何 康佳电视服务器异常网络连接正常 电力施工清单价格比对数据库软件 江岸区电商网络安全维护范围 dhcp服务器没有反映 扫码枪怎么注册到数据库中去 网络安全训练营32讲 有些软件用到数据库 通信与网络技术期末 企业借贷软件开发 网络安全宣传广告片 通信软件开发待遇怎么样 阿里云服务器挂软件 软件开发客服好做吗 双网卡服务器怎么能够同时通
0