SQL中“LIKE”语句的高级用法和通配符详解

sql中like的语法 LIKE模糊匹配的5个通配符技巧

哎呀,让我告诉你我当时遇到的陷阱。
至于SQL LIKE,确实很头疼。

当时我还在一家小公司做用户查询系统。
要求检查姓名中带“小”的用户。
我只使用了%小%,但我的朋友,我一跑,它就卡住了。
查了一下,数据表有几十万张。
该查询直接扫描整个表。
我跟开发者说了,他一查,也愣住了:“不能这么用。
”后来我们改成先按姓氏过滤,再模糊查询,速度更快了。

还有一次,我在旧系统的数据库中检查了我的邮箱。
由于系统使用的是SQL Server,所以我想到了使用方括号[a-z]来搜索小写字母。
研究了半天,发现SQL Server必须加转义字符,否则直接报错。
我很困惑,为什么这件事不一样?查看文档后发现不同的数据库对LIKE的支持不同。

请记住,还有另一个陷阱,那就是大写字母。
我曾经搜索过一个英文名字。
本来以为%smith%就够了,结果发现数据库默认区分大小写,找不到SMITH。
我刚刚使用了 LOWER(name) LIKE LOWER('%smith%') 并且它是正确的。
不然的话就真的很头疼了。

所以使用LIKE时要小心,尤其是%。
如果可以的话尽量不要使用初始%。
因为这件事,我调试了好几天。
想一想,一个简单的查询,整个系统就陷入了蜗牛般的速度,老板还催促你,压力很大。

sql like如何使用

你好,请问SQL中的LIKE子句是什么?让我告诉你我上次使用它时发生了什么。

去年,我参加了北京的一个电子商务项目。
正确的?那时,你必须检查用户输入的关键字,但人们可能只记住几个单词。
这就是 LIKE 派上用场的地方。

关于在 SELECT 的 WHERE 子句中执行 column_name LIKE 模式的基本语法,您是正确的。
例如,当检查订单号时,用户只记住“ORD”。
直接写order_id LIKE 'ORD%'即可查找所有以ORD开头的订单。
这个百分号(%)真是个狠角色,什么都能适应。

最有趣的是下划线(_),它代表单个字符。
我记得检查系统日志,发现有一个名为“ERR_5 ”的错误代码,所以我使用了error_code LIKE 'ERR_5 ',但只找到了下划线部分。
如果写'ERR__5 ',则找不到下划线,因为它是一个字符,必须留空。
真的很烦人。

方括号 ([]) 看起来不太令人印象深刻,但我们知道它们匹配集合中的任何内容。
例如,要检查电子邮件后缀,您可以 LIKE '%[@]gmail.com' 以查找所有带有 @ 符号并后跟 gmail.com 的电子邮件。
它的使用不如百分号那么多。

不过,我要提醒你的是,LIKE对大小写字母相当敏感。
我在 MySQL 中执行此操作,但它变得秃头,因为它默认区分大小写。
经过长时间的搜索,我发现我需要更改排序规则以忽略大小写。
这需要特别注意。

还有性能问题。
你说得对。
我的一个朋友去年写了一个复杂的查询,有 5 个 LIKE 嵌套,需要一天的时间才能运行。
后来数据库高手分析说,当数据量很大的时候,LIKE百分号(%)特别消耗资源,因为它要扫描全表。
最终有人提议改用全文索引,效率飙升。
所以当你写SQL的时候,你不仅要知道怎么写,还要明白为什么要这样写。

无论如何,在使用 LIKE 时,请考虑以下事项: 1 . 百分号(%)和下划线(_)哪个更合适? 2 . 是否区分大小写? 3 . 你的查询是否太慢?
明白了这几点,基本上就可以很好的使用了。
如果您有任何具体问题,请与我联系。