SELECT id,name,list from tb_test WHERE FIND_IN_SET('daodao',list); -- (一)的改进版 总结: 所以如果list是常量,则可以直接用IN, 否则要用find_in_set()函数。 也就是这两个sql是查询的效果是相同的: 1 2 SELECT * from C_PURCHASINGMASTERDATA where FIND_IN
这句mysql语句用到了find_in_set进行排序,意思是根据goods_id在$idList这个变量中的前后顺序进行排序。 find_in_set除了可以用在order by排序外,还有另外一种用法,用在where语句中。 SELECT id, LIST, NAME FROM `test` WHERE FIND_IN_SET('daodao',`list`); 这里list可以是一个变量,也可以是一个字段名称...
SELECT*from test whereFIND_IN_SET('20',btype) 当然它的返回值为null,因为字段中没有这个值 FIND_IN_SET和like的区别 like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值以英文”,”分隔,Find_IN_SET查询的结果要小于like查询的结果。
WHERE FIND_IN_SET('travel', interests) > 0 OR FIND_IN_SET('reading', interests) > 0 OR FIND_IN_SET('music', interests) > 0 AND user_id != @current_user_id; -- 排除当前用户 1. 2. 3. 4. 5. 6. 7. 8. 9. 在这个查询中,通过FIND_IN_SET函数分别查找具有'travel'、'reading'...
SELECT*FROMusersWHEREFIND_IN_SET('音乐', interests)>0; 这个查询将返回所有interests列包含"音乐"的行。 注意事项 性能考虑:由于FIND_IN_SET需要对每行执行字符串分割和搜索操作,它可能不是非常高效,特别是在处理大型数据集时。因此,如果可能,考虑使用更高效的数据结构(如关系表)来存储和查询这类数据。
SELECT*FROMproductsWHEREFIND_IN_SET('5', category_ids) >0; 这将返回所有category_ids字段包含数字5的行。 增强功能 FIND_IN_SET()函数的强大之处在于其简单性和直接性,但它在一些方面受限。对于大型的数据集或需要更高性能的情况,通常建议使用其他方法,如下: ...
WHERE FIND\_IN\_SET('技术', tag\_list) > 0; 1. 2. 3. 4. 5. 在这个查询中,FIND_IN_SET('技术', tag_list)会在每一行记录的tag_list字段中查找字符串 “技术”。如果找到了,函数返回的值将大于 0,WHERE子句就会筛选出这些符合条件的记录,从而我们就能获取到所有带有 “技术” 标签的文章编号。
(2)下面利用mysql 函数find_in_set()来解决: SELECT * FROM users WHERE FIND_IN_SET(2,limits); 这样就能达到我们预期的效果,问题就解决了! ①注意:mysql字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开。
注意 使用find_in_set函数进行查询整张表的时候, 一次返回多条记录的情况 比如说: id是某一个表的主键字段,然后每条记录分别是id等于1,2,3,4,5的时候, 就有点类似in() 的操作了 案例: select * from per where find_in_set(id,'2,3,4,5,6'); ...
其实上面的SQL语句也等同于下面的in select * from per where id in(2,3,4,5,6); 小提示: find_in_set() 一般都写在 where关键字的后面! 3.find_in_set()与in()的应用场景区别 刚才我们也看到了 select * from per where find_in_set(id,'2,3,4,5,6'); 与 select * from per where id...