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

2024-11-02 10:16:14
推荐回答(4个)
回答1:

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

回答2:

通过instr函数即可解决。

具体方法如下:

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

回答3:

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

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

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

回答4:

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

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

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