INSTRB

说明

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