INSTR
📄字数 623
👁️阅读量 加载中...
功能描述
返回子字符串 expr2 在字符串 expr1 中第一次出现的位置。
语法格式
sql
INSTR(expr1,expr2[,expr3,expr4])输入参数
expr1:源字符串,VARCHAR类型。expr2:字符串,VARCHAR类型。expr3:可选参数,查找的起始位置,INTEGER类型,缺省值为1。大于0时,按从左到右的顺序查找;小于0时,按从右往左的顺序查找。expr4:可选参数,查找第几次出现的目标字符串(默认为1),参数范围为正整数,INTEGER类型。
输出结果
输出结果为INTEGER类型,表示子字符串在源字符串中的位置(字符位置),子字符串不存在于源字符串中,则返回0。任意参数为NULL,则返回NULL。
执行类型
| TYPE | VALUE | 说明 |
|---|---|---|
| NATIVE | 0 | 函数只能在本地计算 |
| VOLATI | 0 | 函数的每次计算值不同 |
| STABLE | 0 | 函数的每次计算值相同 |
| COMPUTE | 0 | 函数支持预计算取值 |
| NOT_CONST | 0 | 函数不支持转常数 |
| HAVE_DEF | 0 | 函数参数有默认值 |
示例
SQL
-- 示例1:从右往左寻找匹配ba的位置
SQL> SELECT INSTR('abbaxycdaxzbapqw', 'ba', -2) FROM dual;
+-------+
| EXPR1 |
+-------+
| 12 |
+-------+
-- 示例2:从右往左寻找第二个匹配ba的位置
SQL> SELECT INSTR('abbaxycdaxzbapqwba', 'ba', 1, 2) FROM dual;
+-------+
| EXPR1 |
+-------+
| 12 |
+-------+
-- 示例3:从左往右寻找第三个匹配ba的位置
SQL> SELECT INSTR('abbaxycdaxzbapqwba', 'ba', 1, 3) FROM dual;
+-------+
| EXPR1 |
+-------+
| 17 |
+-------+