温馨提示×

如何利用 Oracle substr 函数查找子串位置

小樊
82
2024-09-16 19:06:40
栏目: 云计算

在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

0