在开发过程中,经常会遇到需要查询数据库中某个字段包含特定字符串的情况。MySQL提供了两种主要的方式来实现这一功能:FIND_IN_SET和LIKE。 FIND_IN_SET函数用于在逗号分隔的字符串列表中查找特定字符串。 LIKE运算符用于模糊匹配字符串。 但是,由于数据库表可能包含大量数据,使用这两种方法进行查询可能会导致
2.1 FIND_IN_SET 的应用场景 FIND_IN_SET通常用于查找以逗号分隔的数据。例如,假设我们有一个用户表,其中的字段tags是一个以逗号分隔的标签字符串,我们可以用FIND_IN_SET来检查某个标签是否在列表中。 SELECT*FROMusersWHEREFIND_IN_SET('python',tags)>0; 1. 2. 3. 2.2 LIKE 的应用场景 LIKE操作符更为...
SELECT userid,username,userrole 角色 FROM `user` WHERE find_in_set('2',userrole) 结果: 显然用 find_in_set() 查询得到的结果才是我们想要的结果。所以他俩的 主要的区别就是like是广泛的模糊查询;而 find_in_set() 是精确匹配,并且字段值之间用‘,'分开,Find_IN_SET查询的结果要小于like查询的结果。
like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值以英文”,”分隔,Find_IN_SET查询的结果要小于like查询的结果。
FIND_IN_SET在处理逗号分隔的字符串时效率较高,因为它是一个专门为这种数据类型设计的函数。MySQL内部会优化这个函数,以便快速查找字符串在列表中的位置。然而,需要注意的是,存储逗号分隔的字符串并不是数据库设计的最佳实践,因为这违反了第一范式(1NF),可能导致查询效率低下和难以维护。 4. LIKE在处理文本搜索和...
SELECT*FROMusersWHEREFIND_IN_SET(2,limits); 这样就能达到我们预期的效果,问题就解决了! 注意:mysql字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开。 总结:like是广泛的模糊匹配,字符串中没有分隔符,Find_IN_SET 是精确匹配,字段值以英文”,”分隔,Find_IN...
面试官让我匹配下 #白色 的所有数据,我当时第一反应就是通过 like 来处理,然后他说还有没有别的方法。 我想了下就说 find_in_set但是它的配置值必须要是用逗号隔开,所以应该不满足。后面这个问题确实困扰了我,我就各种查找有效的方法,今天就总结下,MySQL的模糊查询,以后的多扩展下自己的思路,多尝试其他的方式...
mysql中FIND_IN_SET和like的区别 简介:在数据库中新建一张测试表t_user,包含三个字段'id','name','grilfriend',字段很容易看出,这是记录一个人的女朋友的表,注意这里的‘firlfriend’字段可以是多个人名,之间用逗号分开,如‘杨幂01,杨幂02’;这样的数据存储我们也经常见到。
▲ 用法场景 在有些情况下,仅使用LIKE操作符进行查询可能无法精准满足需求,因为它可能会检索到一些不相关的记录。此时,使用find_in_set()在权限管理、职务查询等场景中实现精确匹配显得尤为重要。在这些场景中,find_in_set函数能够更准确地判断一个值是否存在于由逗号分隔的字符串中,从而满足我们的查询需求。
mysql 语句中的in、find_in_set、like的区别 1.in查询相当于多个or条件的叠加,例如: select * from user where user_id in (1,2,3); 等效于 select * from user where user_id = 1 or user_id = 2 or user_id = 3; not in与in相反,如下...