Oracle | 字符串操作 - SUBSTR 和 INSTR函数

一、字符串查找函数  INSTR()

二、字符串截取函数 SUBSTR()

三、实际应用: SUBSTR 和 INSTR 结合使用


一、字符串查找函数  INSTR()

格式: INSTR(str , substr , 【start_position ,【 nth_appearance】】) 

           @param str:源字符串     

           @param substr:子字符串,在源字符串中查找的字符串

           @param start_position:从源字符串str开始查找的位置。可选,默认为1。正数时从左向右检索,负数时从右向左检索

           @param nth_appearance:查找源字符串时,第几次出现目标字符串 str2 。可选,默认为1,不能为负数。

           @return 返回子字符串在源字符串中出现的位置(没找到返回0)

注:字符串索引号从1开始,而不是从0开始。

例:(1) INSTR('todayisabeautifulday' , 'to')  

                 返回结果:1 (因为字符串索引号从1开始,所以返回1,不是返回0)

      (2)  INSTR('todayisabeautifulday' , 'day',1, 1)

                 返回结果: 3 (返回第一次查出 day 的位置)

      (3) 若改成 INSTR('todayisabeautifulday' , 'day',1, 2)

                则返回结果为第二次出现 day 的位置:18

      (4) INSTR('today is a beautiful day' , 'is',1, 1)

                返回结果:7 (空格也是一个字符)

二、字符串截取函数 SUBSTR()

格式:SUBSTR(str, start_position ,【 length】)

            @param str:  源字符串      

            @param start_position: 检索位置。参数为正时从左向右检索,参数为负时从右向左检索

            @param length:将要截取的长度,可选,默认从start_position 位开始截取全部。值小于1时返回空字符串 

            @return 返回截取的字符串

注: 字符串索引号从1开始,而不是从0开始。

例:(1)SUBSTR ('ABCDEFG', 2, 3)

                返回结果:'BCD' (从第2个字符开始,截取长度为3的子串)

       (2)substr('ABCDEFG',  -2) 

                返回结果:'FG'   (从倒数第2个字符开始,截取到源串的末尾)

       (3)substr('ABCDEFG', -4, 2)

               返回结果:'DE' (从倒数第4个字符开始,截取长度为2的子串)

      (4)substr('ABCDEFG', 4, -1)

               返回结果: 空字符串 (截取长度小于1时,返回空字符串 )

三、实际应用: SUBSTR 和 INSTR 结合使用

结合 SUBSTR()和 INSTR()来实现截取字符串中特定字符前后的字符串

(1)截取 “hello,world” 字符串中 “,” 分隔符之前的字符串

 SELECT SUBSTR(' hello,world', 1, INSTR('hello,world', ',')-1)  FROM DUAL;

 返回结果:hello

(2)截取 “hello,world, ye” 字符串中第1次出现的 “,” 字符和第2次出现的 “,” 字符之间的字符串

SELECT SUBSTR('hello,world,ye', INSTR('hello,world,ye', ',',1)+1, INSTR('hello,world,ye', ',', 1, 2)-INSTR('hello,world,ye', ',', 1)-1 ) FROM DUAL; 

返回结果:world


参考链接:https://blog.csdn.net/lanmuhhh2015/article/details/78861614

你可能感兴趣的:(Oracle | 字符串操作 - SUBSTR 和 INSTR函数)