MySql模糊查询5种方法比较

本文深入探讨了SQL中模糊查询的多种方法,包括like、instr、position、locate和find_in_set等函数的使用,并对比了它们在查询速度上的差异。通过具体示例,详细解释了这些函数如何帮助开发者更高效地进行数据检索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.举个栗子


1.like

SELECT * FROM user WHERE nick_name like '%单%'      
SELECT * FROM user WHERE nick_name like '_单%'  //第二个字符是单的数据  
SELECT * FROM user WHERE nick_name like '[^派课]单%'  //不包含派和课的数据
SELECT * FROM user WHERE nick_name like '[^1-3]单%'   //不包含1单,2单,3单的数据

  2.instr

SELECT * FROM user WHERE INSTR(nick_name,'单') >0


  3.position

SELECT * FROM user WHERE POSITION('单' IN nick_name) >0 


4.locate

SELECT * FROM user WHERE LOCATE('单',nick_name) >0
SELECT * FROM user WHERE LOCATE('单',nick_name,4)


              
5.find_in_set

SELECT * FROM user WHERE FIND_IN_SET('单',nick_name)

二.分析


查询速度上,上面2-5栗子比1快一点


1.INSTR(str,substr)


返回字符串 str 中子字符串的第一个出现位置。这和LOCATE()的双参数形式相同,只是参数的顺序被颠倒。

2.LOCATE(substr,str) , LOCATE(substr,str,pos)


第一个语法返回字符串 str中子字符串substr的第一个出现位置。第二个语法返回字符串str中子字符串substr的第一个出现位置, 起始位置在pos。如若substr 不在str中,则返回值为0。

3.POSITION(substr IN str)


POSITION(substr IN str)是 LOCATE(substr,str)同义词。

4.FIND_IN_SET(str,strlist)


当表中无数据或者列为null时,postion会成立 find_IN_SET 比较严格 如果没有数据 则不成立

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值