INSTRB¶
说明¶
INSTRB函数是取得子字符串在源字符串中指定起始位置(字节位置)的函数
参数¶
string
待搜索的源字符串。
- 支持汉字
- 支持空串和NULL值
- NULL时,返回NULL
- 字符串长度不能超过8000
substring
- 要在string中查找的字符串。
- 支持汉字
- 为NULL,返回NULL
- 字符串长度不能超过8000
position
查找字符串的起始位置。
- 如果参数缺省,默认值为1。
- 浮点型数向下取整。
- 如果大于0,则从string的自左向右第position位为起始位置。
- 如果大于string的长度,返回0。
- 如果小于0,自右向左查找。
- 如果小于0并且|position|大于string的长度,返回0。
- 如果等于0,返回0值。
- 为NULL时,返回NULL。
occurrence
查找第几次出现的substring;
- 如果参数缺省,默认值为1
- 如小于等于0,返回0;
- 为NULL时,返回NULL。
返回值¶
输出参数:string内从position位置开始第occurrence次出现串substring的起始位置(字节位置),从1开始计数。
注解
INSTRB和INSTR都是在源字符串中查找子字符串位置的函数,区别在于INSTR函数返回的子字符串的位置是按照字符个数来计算的,而INSTRB函数返回的子字符串位置则是按字节数计算的。
示例¶
示例1: 使用 INSTRB 计算子串所在位置
select instrb('我是中国人是中国人是中国人','是',3,2) from dual;
INSTRB(int) |
-----------------
11 |
总数目:1
select instrb('我是中国人是中国人是中国人','是',4,2) from dual;
INSTRB(int) |
-----------------
19 |
总数目:1
select instrb('我是中国人是中国人是中国人','是',3) from dual;
INSTRB(int) |
-----------------
3 |
总数目:1
select instrb('我是中国人是中国人是中国人','是') from dual;
INSTRB(int) |
-----------------
3 |
总数目:1