在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