Mysql中的INSTR和FIND_IN_SET函数应用

INSTR函数

The INSTR() function returns the position of the first occurrence of a string in another string.

This function performs a case-insensitive search.

能够找到第一个匹配到位置,类似java中的firstIndexOf,并且是大小写不敏感的搜索

用法

首先:了解到 INSTR 函数的基本功能时能够 返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始) .比如:

1
2
3
4
-- 结果为10
select INSTR("this is mysql","y")
-- 结果为0
select INSTR("this is mysql","a")

2如果instr当作查询条件,就能起到类似in的作用

1
2
-- 返回用户id为12的数据,同样的,也会返回id为 1,2的数据
select * from user u where INSTR('12',u.id);

更复杂的能够查询数据为字符串,并且用特定符号分隔的特定的数据

1
2
3
4
5
6
7
select (
select GROUP_CONCAT(u.username) as name
from `user` u
where INSTR(concat(',',(p.leaderIds),','),concat(',',(u.id),','))
)
from product p
WHERE p.product_uid ='02124ff31eac4c14934b045358b10cca'

FIND_IN_SET 函数

The FIND_IN_SET() function returns the position of a string within a list of strings.

能够返回list中的字符串位置(使用逗号分隔)

基础的就不多说,直接举例

1
2
-- 会只返回id为12,13的数据
select * from user u where FIND_IN_SET(u.id,'12,13')

find_in_set 和 instr 函数做例子上的对比时,发现instr是模糊匹配,只要符合都会查出来,而find_in_set是针对使用逗号分隔的对instr的进一步处理,只有出现在逗号之间的进行精确匹配.

-------------本文结束感谢您的阅读-------------

本文标题:Mysql中的INSTR和FIND_IN_SET函数应用

文章作者:NanYin

发布时间:2020年03月09日 - 12:03

最后更新:2020年03月09日 - 09:03

原始链接:https://nanyiniu.github.io/2020/03/09/INSTR%E5%92%8CFIND_IN_SET%E5%87%BD%E6%95%B0/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。