更新时间:2023-11-03 GMT+08:00

instr1

instr1函数用于计算子串str2在字符串str1中的位置。

相似函数:instr,instr函数用于返回substr在str中最早出现的下标。但是instr不支持指定起始搜索位置和匹配次数。

命令格式

instr1(string <str1>, string <str2>[, bigint <start_position>[, bigint <nth_appearance>]])

参数说明

表1 参数说明

参数

是否必选

参数类型

说明

str1

STRING

待搜索的目标字符串。

如果输入为BIGINT、DOUBLE、DECIMAL或DATETIME类型,则会隐式转换为STRING类型后参与运算,其他类型会返回报错。

str2

STRING

待匹配的子串。

如果输入为BIGINT、DOUBLE、DECIMAL或DATETIME类型,则会隐式转换为STRING类型后参与运算,其他类型会返回报错。

start_position

BIGINT

表示从str1的第几个字符开始搜索,默认起始位置是第一个字符位置1。

当start_position为负数时表示开始位置是从字符串的结尾往前倒数,最后一个字符是-1,依次往前倒数。

nth_appearance

BIGINT

表示str2在str1中第nth_appearance次匹配的位置。

如果nth_appearance为其他类型或小于等于0,则返回报错。

返回值说明

返回BIGINT类型。

  • 如果在str1中未找到str2,则返回0。
  • 如果str2为空串,则总能匹配成功。
  • str1、str2、start_position或nth_appearance值为NULL时,返回NULL。

示例代码

返回 10

select instr1('Tech on the net', 'h', 5, 1);

返回2。

select instr1('abc', 'b');

返回NULL。

select instr('abc', null);