①.LOCATE(字符串1,字符串2)
返回字符串1在字符串2中第一次出現的位置,只要字符串2中包含字符串1,那么返回值必然大於0。
②.LOCATE(字符串1,字符串2,pos)
返回字符串1在字符串2中第一次出現的位置,從位置pos開始算起;
如果返回0,表示從pos位置開始之后沒有了
如果返回值 大於0,表示有
使用案例:
現在有一張user表,如下:
id | user_name | emails |
---|---|---|
1 | 小張 | a@fujieace.com,b@fujieace.com,c@fujieace.com |
2 | 小王 | aa@fujieace.com,bb@fujieace.com,cc@fujieace.com |
3 | 李四 | aa@fujieace.com,b@fujieace.com,d@fujieace.com |
4 | 王五 | aa@fujieace.com,e@fujieace.com,f@fujieace.com |
思考:
我們如何用sql查找所有“emails”字段中有“aa@fujieace.com”的用戶?
答案:
- select * from users where locate('aa@email.com',emails);
拓展案例:
判斷site表中的url是否包含'http://'子串,如果不包含則拼接在url字符串開頭
- update site set url =concat('http://',url) where locate('http://',url)=0;
注意:mysql中字符串的拼接不能使用加號+,用concat函數;