MySQL 查找字符串位置函数

注意:本文MySQL版本为5.7

1、INSTR(str,substr)

返回字符串str中第一次出现子字符串substr的位置,没有则返回0。

官网:https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_instr

select instr('zcxvsd1sa','b');  -- 0
select instr('zcxvsd1sa','s');  -- 5
select instr('zcxvsd1sa',1);    -- 7

2、LOCATE(substr,str), LOCATE(substr,str,pos)

LOCATE(substr,str):返回字符串str中第一次出现子字符串substr的位置,没有则返回0。

LOCATE(substr,str,pos):从pos位置开始返回字符串str中第一次出现子字符串substr的位置,没有则返回0。

官网:https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_locate

select locate('s','zcxvsd1sa',-1);  -- 0
select locate('s','zcxvsd1sa',-3);  -- 0
select locate('s','zcxvsd1sa',0);   -- 0
select locate('s','zcxvsd1sa',1);   -- 5
select locate('s','zcxvsd1sa',5);   -- 5
select locate('s','zcxvsd1sa',6);   -- 8
select locate('s','zcxvsd1sa');     -- 5
select locate(1,'zcxvsd1sa');       -- 7

locate()函数不支持起始位负数的查询,即无法从尾部向头部查询。

但可以配合REVERSE(str)反转函数实现从从尾部向头部查询。

可以参考我之前的文章:https://blog.csdn.net/weixin_45873444/article/details/117929175

3、POSITION(substr IN str)

返回字符串str中第一次出现子字符串substr的位置,没有则返回0。

用法同LOCATE(substr,str)。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐