oracle怎么截取字符串中的一部分字符
时间:2022-02-25 11:56
在oracle中,可以利用Instr()和substr()函数来截取字符串中的一部分字符,语法为“SUBSTR('需要截取的字符串',截取开始位置, INSTR('需要截取的字符串,'','查找开始位置','第几次出现')-1) ”。 本教程操作环境:Windows7系统、Oracle 11g版、Dell G3电脑。 oracle截取字段中的部分字符串 使用Oracle中Instr()和substr()函数: 在Oracle中可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符。 其语法为: 其中 sourceString代表源字符串; destString代表想聪源字符串中查找的子串; start代表查找的开始位置,该参数可选的,默认为1; appearPosition代表想从源字符中查找出第几次出现的destString,该参数也是可选的,默认为1; 如果start的值为负数,那么代表从右往左进行查找,但是位置数据仍然从左向右计算。 返回值为:查找到的字符串的位置。 对于instr函数,我们经常这样使用:从一个字符串中查找指定子串的位置。例如: 从第7个字符开始搜索 从第1个字符开始,搜索第2次出现子串的位置 对于instr函数,我们经常这样使用:从一个字符串中查找指定子串的位置。例如: 从1开始算 d排第四所以返回4 从第3个字符开始算起 第3个字符是c,所以从3开始以后的字符串找查找bc,返回9 substr函数的用法,取得字符串中指定起始位置和长度的字符串 ,默认是从起始位置到结束的子串。 如: SUBSTR()函数 1.用处:是从给定的字符表达式或备注字段中返回一个子字符串。 2.语法格式: 格式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) 将 C3411.907w15 截取点号之后 的字符串 907w15 SUBSTR ('C3411.907w15', INSTR ('C3411.907w15', '.', 1, 1)+1) 项目应用实例: 原始字符串: 原始字段中存在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怎么截取字符串中的一部分字符的详细内容,更多请关注gxlsystem.com其它相关文章!instr(sourceString,destString,start,appearPosition).
instr('源字符串' , '目标字符串' ,'开始位置','第几次出现')
SQL> select instr('yuechaotianyuechao','ao') position from dual;
POSITION
----------
6
SQL> select instr('yuechaotianyuechao','ao', 7) position from dual;
POSITION
----------
17
SQL> select instr('yuechaotianyuechao','ao', 1, 2) position from dual;
POSITION
----------
17
SQL> select instr('abcdefgh','de') position from dual;
POSITION
----------
4
SQL>select instr('abcdefghbc','bc',3) position from dual;
POSITION
----------
9
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(string string, int a, int b);
substr(string string, int a) ;
SELECT SUBSTR ('C3411.907w15', 0, INSTR ('C3411.907w15, '.', 1, 1) - 1)
FROM DUAL
SELECT SUBSTR ('C3411.907w15', INSTR ('C3411.907w15', '.', 1, 1)+1)
FROM DUAL