一、字符串查找函数 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