一、find_in_set()
我们知道mysql提供了一个好用的函数
FIND_IN_SET(str,strlist),
该函数的作用是查询字段(strlist)中是否包含(str)的结果,
返回结果为null或记录 。
str 要查询的字符串
strlist 需查询的字段,参数以”,”分隔,例如如 '1,2,3'。
下面有一组示例
我们一般在查询的where条件使用 FIND_IN_SET(str,strlist)>0,则说明strlist包含str
但是这个函数的第一个参数只能判断是单个字符串,如果我有以下需求
1. 判断字符串 '1,3' 中的元素是否有任意一个元素存在字符串 '1,3,4,5,7',意思就是1或者3只要有任意一个存在字符串 '1,3,4,5,7' 中就算匹配成功。
2. 再比如判断字符串 '1,3,5' 中的所有元素是否都存在于字符串 '1,3,4,5,7' 中,即1,3,5每个元素都要在 字符串 '1,3,4,5,7'中能找到才算匹配成功。
针对需求1,提供了一个叫 FIND_PART_IN_SET 的函数
针对需求2,提供了一个叫 FIND_ALL_PART_IN_SET 的函数
二、FIND_PART_IN_SET
实际调用判断FIND_PART_IN_SET(str1 ,str2)>0即可,例如FIND_PART_IN_SET('1,3' , '1,3,4,5')>0
三、FIND_ALL_PART_IN_SET
实际调用判断FIND_ALL_PART_IN_SET(str1 ,str2)>0即可,例如FIND_PART_IN_SET('1,3,5' , '1,3,4,5,7')>0