Oracle 截取 “_“ 字符后的字符串

问题描述

Oracle 截取 “_” 字符后的字符串

数据库表记录

在这里插入图片描述

结果记录

ADDR_NAME 字段的字符串按照下划线 “_” 进行分割,依次得到 “hehe”、“haha”、“lala”、“heihei”、“meimei” 这样五个字符串

问题解决

SELECT
	ADDR_NAME, 
	SUBSTR( ADDR_NAME, INSTR( ADDR_NAME, '_', 1 ) + 1 ) NAME 
FROM
	TS_USER

按照上述 SQL 语句执行后,得到 “hehe”、“haha”、“lala”、“heihei”、“meimei” 这样五个字符串:
在这里插入图片描述

分析

instr 函数:返回子字符串在源字符串中的位置

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

string:表示源字符串。ADDR_NAME

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

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

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

# 返回 '_'字符 在 ADDR_NAME 中的位置
select INSTR( ADDR_NAME, '_', 1 ) from TS_USER

在这里插入图片描述

substr 函数:截取字符串

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

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

start:开始位置,下表从1开始。如果start是负数,则从string字符串末尾开始算起。INSTR( ADDR_NAME, '_', 1 ) + 1 代表的含义为 :"_" 的后一个字符

length:可选项,表示截取字符串长度。
返回从 “_” 的后一个字符字符串末尾的所有字符。

SELECT
	ADDR_NAME, 
	SUBSTR( ADDR_NAME, INSTR( ADDR_NAME, '_', 1 ) + 1 ) NAME 
FROM
	TS_USER

在这里插入图片描述

参考链接

https://www.jb51.net/article/149958.htm

相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页