sql语句中怎么实现in中的模糊查询

需要明确的是,这些只是SQL模糊查询的许多用途,但是如果你用得好,你可以为自己省去很多麻烦。

首先我来说说最重要的事情。
LIKE 语句中的“xx%”是搜索的开始。
“PSM2 4 W%”帮助团队在检查去年运行的项目中的内容时节省了至少两天的时间。
我记得当时的数据量是5 000条;’ 'xx%' 用于检查结尾。
像“%-R-FA1 ”这样的类型在去年检查故障代码时特别有用,但有一个细节很重要 - 最后检查时不要丢失负号。
我一开始以为通配符可以自动处理,结果我差点就错了。
还有一点,中间搜索的时候用“2 4 W%”,比如用2 4 W查型号。
很多人不重视这一点。
如果通配符位置错误,整个查询可能会卡住。
例如,“PSM%2 4 W%”是没有用的。

等等,还有一件事。
不明确的查询确实会降低数据库的速度。
去年的一个项目中,top 1 0没有正确使用,几乎烧毁了整个服务器CPU。
后来发现先加WHERE语句过滤,然后再添加前1 0条,效率比较高。

温馨提示:前面或者后面放通配符会大大降低查询效率,比如‘PSM2 4 W%’、‘%2 4 WPSM’。
后者可能比前者高出数十倍。
很多人没有注意到这一点。

建议下次使用模糊查询时,先在较小的范围内尝试,而不是直接去较大的表。

如何在SQL中使用LIKE?模糊查询的模式匹配技巧

哦,我知道那些东西!上周有客户问我为什么写报告写了很久就不喜欢。
我和他战斗了很长时间。
越说越觉得这东西真是一把双刃剑。

你看,LIKE最直接的优点就是简单,任何人都可以使用。
想找到所有姓王的人吗? “王%”就够了。
您是否正在寻找扩展名为 .zip 的文件? '%\.zip' 就足够了。
这个东西写起来确实方便,而且不像正则表达式那么复杂。
2 02 3 年在深圳做一个项目,有一个客户数据量不大,所以用LIKE来满足大部分需求。
真的很顺利。

但是!敲黑板!一旦你以%开头,例如“%%abc”,它基本上告诉数据库,“兄弟,扫描一下吧!”扫描整个表,看看里面有没有abc的内容。
我曾经遇到的最大的陷阱是使用“%%”来搜索空字符串。
这导致所有空字段都被匹配,这几乎导致数据库崩溃。
这种性能损失简直是压倒性的,特别是如果时钟很大的话,它真的会慢到让你怀疑它的寿命。

所以技能非常重要。
正如我上面提到的,永远不要以“%”开头,因为它会影响性能。
2 02 2 年,我在上海搭建了一个电商系统,修改了几百条SQL。
第一个优化是将所有“%%”改为“abc%”或直接“abc”。
还有转义字符,例如B. 带% 符号的产品编号。
直接检查而不转义会弄乱它。
您需要更改它才能解决问题。
有时将其与 NOT LIKE 结合起来是有意义的。
例如,如果你想检查用户名,不能包含某些单词,只需输入“NOT LIKE "%sensitive word%"”即可,简单粗暴。

但是如果模式太复杂,比如邮箱地址验证,或者密码不能是连续三个相同的字符,那么LIKE就变得有点麻烦了。
在这种情况下,您需要使用 REGEXP/RLIKE。
2 02 1 年,我帮杭州的一个财务人员,用REGEXP查身份证号码的格式,写得太好了,简直就是艺术。
但性能又如何呢?同一张表的运行速度比LIKE慢两倍多,所以想一想:你是否必须做出权衡?当添加确实很复杂时,请使用常规,例如来自MySQL的FULLTEXT,但效果因数据库而异。
有些数据库对 LIKE 索引的支持特别好,但其他数据库呢?基本上,您必须查看您使用的数据库系统。
之后我仍然会想起那个 Escape 角色。
有时我用“\”,有时我用其他符号,但数据库可能无法识别。
这实在是一个陷阱。