Oracle中的INSTR函数
Oracle中的INSTR
函数是一个字符串查找函数,用于返回目标字符串在源字符串中首次出现的位置。
基础语法
INSTR(源字符串, 目标字符串)
示例:SELECT INSTR('HELLO WORLD', 'WO') FROM dual;
返回结果为7
,表示'WO'
从第7个字符开始出现。扩展语法(指定起始位置和匹配次数)
INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)
- 起始位置可为负数(表示从末尾倒序搜索),但返回的序号仍为正序位置。
示例: - 查找第二次出现的
'O'
:SELECT INSTR('HELLO WORLD', 'O', 1, 2) FROM dual;
返回8
。 - 倒序查找第二次出现的
'O'
:SELECT INSTR('HELLO WORLD', 'O', -1, 2) FROM dual;
返回5
。
- 起始位置可为负数(表示从末尾倒序搜索),但返回的序号仍为正序位置。
与
LIKE
的对比INSTR
可实现类似LIKE
的模糊查询,但更灵活,例如可通过返回值是否为0
判断是否存在匹配。应用场景
- 布尔盲注:在Oracle注入中,通过
INSTR
遍历数据位置进行布尔判断。 - 字符串截取配合
SUBSTR
:先用INSTR
定位,再用SUBSTR
截取特定部分。
- 布尔盲注:在Oracle注入中,通过
注意事项
- 返回值从
1
开始计数,未找到则返回0
。 - 区分大小写,需结合
UPPER
/LOWER
函数实现不区分大小写的搜索。
- 返回值从