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

avatar
作者
猴君
阅读量: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 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!