在 MySQL 中,LOCATE()
函数用于确定一个子串在另一个字符串中的位置。如果找到了子串,则返回其位置的索引(从 1 开始计数)。如果没有找到,则返回 0。
LOCATE()
函数的语法如下:
LOCATE(substr, str[, start])
substr
:要查找的子串。str
:要在其中查找子串的字符串。start
(可选):开始搜索的位置。如果省略,则从字符串的开头开始搜索。
示例:
- 查找子串
'bar'
在字符串'foobarbar'
中的位置:
SELECT LOCATE('bar', 'foobarbar');
这将返回 4
,因为 'bar'
在 'foobarbar'
中首次出现的位置是从索引 4
开始的。
- 查找子串
'bar'
在字符串'foobarbar'
中,从索引5
开始的位置:
SELECT LOCATE('bar', 'foobarbar', 5);
这将返回 7
,因为从索引 5
开始,'bar'
在 'foobarbar'
中首次出现的位置是从索引 7
开始的。
注意:LOCATE()
函数对大小写敏感(如果指定的校验规则为:utf8mb4_general_ci,那么locate才对大小写不敏感)。如果你想进行不区分大小写的搜索,可以使用 LOWER()
或 UPPER()
函数将字符串转换为统一的大小写,然后再进行搜索。例如:
SELECT LOCATE('bar', LOWER('FooBarBar'));
这将返回 4
,因为 'bar'
在转换为小写的 'foobarbar'
中首次出现的位置是从索引 4
开始的。