oracle怎样查找某个字符所在字符串第n次出现的位置?

如题所述

INSTR(string,set[,start [,occurrence ] ] ) 如果指定start,oracle则跳过前面所有字符串到该位置开始搜索,occurence,是强迫instr跳过前几次与字符串匹配,给出下一次匹配的位置,如果occurence指定3,那就是匹配第三次的位置了。

例 instr('ABACAAA','A',2,2) 从ABACAAA中匹配A这个字符串,从2个位置开始匹配,匹配第2次A所在的位置。PS:如果set中不止有一个字符而是有几个字符组成的,则INSTR给出该字符集中的第一个字符的位置。

NSTR方法的格式为

INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)。也可以表示为INSTR(源字符串, 目标字符串),起始位置, 匹配序号默认都为1.

例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE

FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置。

默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。

所以SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) "Instring" FROM DUAL

的显示结果是

Instring

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-01-24

通过instr函数即可解决。

具体方法如下:

select instr(t.org_code,'-',-1,2) from organ t where t.org_code='1-9-18-8'-1表示从尾部开始,倒数第一个。

第2个回答  2018-01-20

instr函数就可以解决。
instr('源字符串' , '目标字符串' ,'开始位置','第几次出现')
平常我们都是默认是从第一位开始第一次出现的位置,所以后面两个省略了,其实是有这方面参数的。

oracle的<>与!=有什么区别

<>是标准语法.可以移植到其他任何平台.
!=是非标准语法.可移植性差.
但都是表示不等于的意思.
应用中尽量用<>

第3个回答  2018-01-09

instr函数就可以解决。
instr('源字符串' , '目标字符串' ,'开始位置','第几次出现') ,平常我们都是默认是从第一位开始第一次出现的位置,所以后面两个省略了,其实是有这方面参数的。

instr('源字符串' , '目标字符串' ,'开始位置','第几次出现') 平常我们都是默认是从第一位开始第一次出现的位置,所以后面两个省略了,其实是有这方面参数的。

最后一次出现位置 :=FIND("这个不重复就行",SUBSTITUTE(A1,"-"," 这个不重复就行",LEN(A1)-LEN(SUBSTITUTE(A1,"-","")。第N次出现位置,假如查第四个的位置,=find("这个不重复就行",substitute(A1,"\","这个不重复就行",4))。

oracle怎样查找某个字符所在字符串第n次出现的位置?
INSTR(string,set[,start [,occurrence ] ] ) 如果指定start,oracle则跳过前面所有字符串到该位置开始搜索,occurence,是强迫instr跳过前几次与字符串匹配,给出下一次匹配的位置,如果occurence指定3,那就是匹配第三次的位置了。例 instr('ABACAAA','A',2,2) 从ABACAAA中匹配A这个字符串,从2个...

oracle中查找一个字符串中某个字符的位置是什么函数
4、编写sql,查找字母'a'在表中各记录的位置;select t.*, instr(str,'a') location from test_instr t,可以发现,最后一条记录,不存在该字符的话,则返回0。

oracle中instr函数使用方法
- 如果找到子字符串,INSTR函数返回子字符串在主字符串中第一次出现的位置。位置是从1开始的整数。- 如果没有找到子字符串,则返回0。4. 示例:假设我们有一个字符串`'Hello World!'`,我们想查找`'World'`这个词在这个字符串中的位置,可以使用如下查询:`SELECT INSTR FROM your_table;`这将返...

oracle中 sql截取某个字符前面和后面的值
1、将新建好的表aaaa,填充需要查询的数据以"_"或者","为分隔符的两条数据。2、先挑ID为1的数据进行截取查询演示。3、如果已知截取字符的长度和特殊字符位置,就可以用substring()函数来从字符串的开始位置,截取到特殊字符出现的位置。4、使用charindex()函数来返回特殊字符出现的位置,查询结果及语句。

Oracle中instr函数使用方法是什么呢?
Oracle中的instr函数用于查找指定子字符串在主字符串中首次出现的位置。其基本语法如下:SELECT instr 主字符串, 子字符串 [start] FROM 可执行SQL语句的表;例如:SELECT instr(syranmo, s) FROM dual; -- 返回 1 SELECT instr(syranmo, ra) FROM dual; -- 返回 3 其中,instr函数接受两个参数...

oracle中怎么统计一个字符串中某个字符出现的次数?
先得到字段总长度减去把你要统计的字符替换为空的长度 select lengthb(字段)-lengthb(replace(字段,字符,'')) from dual

在ORACLE中获得某个字符在一个字符串中位置是哪个函数
instr(字符串,字符) 查看字符是否在字符串中存在;不存在返回0;存在则返回字符所在的位置;如果有两个以上的字符则返回第一个的位置。例子:select instr('asdfghjkl','s') from dual;

oracle怎么截取指定字符后面的字符串,或者删除指定字符前面的字符串也...
取最后一个\\后面的字符 select substr('D:\\AssetsManagement\\resource\\ehcache\\test.txt',1+(select instr ('D:\\AssetsManagement\\resource\\ehcache\\test.txt','\\',1,(select length('D:\\AssetsManagement\\resource\\ehcache\\test.txt') - length(replace('D:\\AssetsManagement\\resource\\ehcache\\test....

Oracle正则表达式如何查询一个字符串里面包含了任意标点符号的所有记录...
查询value中包含任何标点符号的记录如下:select * from xxx where regexp_like(value,'[[:punct:]]+');POSIX 正则表达式由标准的元字符(metacharacters)所构成: '$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\\n' 或 '\\r'。 '?' 匹配前面的子...

SQL instr函数
在Oracle中 可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符。在一个字符串中查找指定的字符,返回被查找到的指定的字符的位置。语法:instr(sourceString,destString,start,appearPosition)instr('源字符串' , '目标字符串' ,'开始位置','第几次出现')其中sourceString代表源字符串;...

相似回答