【笔记】MySQL文本搜索忽略空格

方案

使用MySQL中的"REPLACE"函数即可解决。
思路就是在查询的时候,先替换掉入参和条件字段值中的空格。

示例

数据库中存在若干条记录,如下:

idname
1001iPad Mini
1002iPad Mini2
1003OnePlus 9Pro
1004ThinkPad T14s

执行SQL:

SELECT * FROM warehouse WHERE REPLACE(`name`,' ','') LIKE CONCAT('%',REPLACE('iPadMini',' ',''),'%')

执行后,会把"iPad Mini"和"iPad Mini2"都查询出来。
注意这里,入参和条件字段都需要加REPLACE函数,这样一来,不管入参有没有空格,都可以保证能够匹配到相应的数据。

总结

实际场景中,不推荐这样查询数据,我们在原则上,应尽量避免在数据库中进行这种运算。
绝大多数情况下,全模糊查询已经可以满足需要了。
如果真的需要这样做,也要优先使用其他的且能够使用到索引的搜索条件,并尽可能过滤出较少的数据后,再进行REPLACE操作。
在不使用索引的条件下,执行效率:精准匹配 > 全模糊 > REPLACE。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值