阅读量:0
在Oracle中,可以使用内置的 INSTR
函数来查找子串在主字符串中的位置
SELECT INSTR('主字符串', '子字符串') FROM DUAL;
这里,INSTR
函数返回子字符串在主字符串中首次出现的位置。如果子字符串不存在于主字符串中,则返回0。
例如,假设我们要在字符串 ‘Hello, World!’ 中查找子串 ‘World’ 的位置:
SELECT INSTR('Hello, World!', 'World') FROM DUAL;
这将返回 8
,因为子串 ‘World’ 在主字符串中的位置是从第8个字符开始的。
如果要查找子串在主字符串中所有出现的位置,可以使用 INSTR
函数的第3个和第4个参数。第3个参数指定从主字符串的哪个位置开始查找,第4个参数指定要查找的子串出现的次数。
例如,查找子串 ‘l’ 在字符串 ‘Hello, World!’ 中所有出现的位置:
WITH positions AS ( SELECT LEVEL AS occurrence, INSTR('Hello, World!', 'l', 1, LEVEL) AS position FROM DUAL CONNECT BY LEVEL <= LENGTH('Hello, World!') ) SELECT * FROM positions WHERE position > 0;
这将返回子串 ‘l’ 在主字符串中所有出现的位置:
occurrence | position -----------+--------- 1 | 3 2 | 10 3 | 13