LOCATE() 定义和用法,LOCATE() 函数返回字符串中第一次出现的子字符串的位置,如果在原始字符串中找不到子字符串,则此函数返回0,此函数执行不区分大小写的搜索,注意:此功能等于POSITION()函数

语法一

LOCATE(substr,str)

返回字符串 substr 中第一次出现子字符串的位置 str。

语法二

LOCATE(substr,str,pos)

返回字符串 substr 中第一个出现子 字符串的 str 位置,从位置开始 pos,0 如果 substr 不在,则返回 str,返回 NULL 如果 substr 或者 str 是 NULL。

举个栗子

mysql> SELECT LOCATE('bar', 'foobarbar');
        -> 4
mysql> SELECT LOCATE('xbar', 'foobar');
        -> 0
mysql> SELECT LOCATE('bar', 'foobarbar', 5);
        -> 7

简单案例

比如我们需要在以下 user表 用 sql 查找所有“department”字段中有“行政部”的用户,该如何充分的使用 locate() 函数呢??

id user_name department
1 彧繎 财务部,运营部,推广部
2 老超 行政部,后勤部,美工部
3 阿杰 行政部,运营部,开发部
4 小胡静 行政部,电商部,财务部

当然方法很简单,如下所示:

select * from users where locate('行政部',department);

拓展案例

判断 site 表中的 url 是否包含 'http://' 子串,如果不包含则拼接在 url 字符串开头,具体使用方法如下:

update site set url = concat('http://',url) where locate('http://',url) = 0;

要注意的是 MySQL 中字符串的拼接不能使用加号 +,用 concat 函数来代替 + 的使用。