方案
使用MySQL中的"REPLACE"函数即可解决。
思路就是在查询的时候,先替换掉入参和条件字段值中的空格。
示例
数据库中存在若干条记录,如下:
id | name |
---|---|
1001 | iPad Mini |
1002 | iPad Mini2 |
1003 | OnePlus 9Pro |
1004 | ThinkPad T14s |
执行SQL:
SELECT * FROM warehouse WHERE REPLACE(`name`,' ','') LIKE CONCAT('%',REPLACE('iPadMini',' ',''),'%')
执行后,会把"iPad Mini"和"iPad Mini2"都查询出来。
注意这里,入参和条件字段都需要加REPLACE函数,这样一来,不管入参有没有空格,都可以保证能够匹配到相应的数据。
总结
实际场景中,不推荐这样查询数据,我们在原则上,应尽量避免在数据库中进行这种运算。
绝大多数情况下,全模糊查询已经可以满足需要了。
如果真的需要这样做,也要优先使用其他的且能够使用到索引的搜索条件,并尽可能过滤出较少的数据后,再进行REPLACE操作。
在不使用索引的条件下,执行效率:精准匹配 > 全模糊 > REPLACE。