MySQL LIKE通配符(%,_)及escape实例讲解

时间:2024-05-02 07:27:07

LIKE操作符常用于模式匹配查询数据。以正确的方式使用LIKE运算符对于提高查询性能至关重要。

LIKE操作符允许您从基于指定的模式选择表中的数据。因此,LIKE操作符经常用于SELECT语句的WHERE子句中。

MySQL提供了两个通配符与LIKE操作符一起使用:百分比 %和下划线_

  • percent(%)通配符允许您匹配任何零个或多个字符的字符串。
  • 下划线(_)通配符允许您匹配任何单个字符。

MySQL LIKE示例

让我们练习一些使用LIKE操作符的例子。请参employees见下表。

MySQL LIKE示例

MySQL LIKE 百分号(%)通配符

假设要查找名字以字符a开头的员工,可以在模式匹配的结尾处使用百分比(%)通配符,如下所示:

SELECT 
    employeeNumber, lastName, firstName
FROM
    employees
WHERE
    firstName LIKE 'a%';

结果如下:

MySQL LIKE 百分号(%)通配符

MySQL扫描整个employees表以查找名字以字符a开头,后跟任意数量字符的员工。

如果要查找名字以on结尾的员工,可以在模式匹配查询中使用通配符%开头,“on”结尾的组合, 如:

SELECT 
    employeeNumber, lastName, firstName
FROM
    employees
WHERE
    lastName LIKE '%on';

结果如下:

MySQL LIKE 百分号(%)通配符

如果你要查找名字含有on的员工,则可以使用 like '%on%',如:

SELECT 
    employeeNumber, lastName, firstName
FROM
    employees
WHERE
    lastname LIKE '%on%';

结果如下:

MySQL LIKE 百分号(%)通配符

MySQL LIKE通配符下划线(_)

如果要查找姓名以T开头,m结尾并且名字为三个字符的员工,可以使用下划线通配符来构造一个SQL查询语句,如:

SELECT 
    employeeNumber, lastName, firstName
FROM
    employees
WHERE
    firstname LIKE 'T_m';

结果如下:

MySQL LIKE通配符下划线(_)

MySQL LIKE运算符与NOT运算符

MySQL允许您结合NOT运算符和LIKE运算符来查找不匹配特定模式的字符串。

假设要查找姓氏不以字符B开头的员工,可以使用 NOT LIKE 模式匹配:

SELECT 
    employeeNumber, lastName, firstName
FROM
    employees
WHERE
    lastName NOT LIKE 'B%';

结果如下:

MySQL LIKE运算符与NOT运算符

请注意,如果LIKE运算符的查询模式使用的是字母,那么它是不区分大小写的,因此b%和B%两个型态查询产生的结果是相同的。

MySQL LIKE与ESCAPE

有时,要匹配的模式包含通配符,例如10%,_20等。在这些情况下,可以使用ESCAPE子句指定转义字符,以便MySQL将通配符解释为文字字符。如果没有明确指定转义字符,默认的转义字符是反斜杠"\"。

例如,如果要查找products表中productCode字段包含字符串_20的产品,则可以使用模式%\_20%查询:

SELECT 
    productCode, productName
FROM
    products
WHERE
    productCode LIKE '%\_20%';

或者也可以指定一个不同的转义字符。例如,通过ESCAPE子句使用 $ 作为转义符:

SELECT 
    productCode, productName
FROM
    products
WHERE
    productCode LIKE '%$_20%' ESCAPE '$';

结果如下:

MySQL LIKE与ESCAPE

模式%$_20%匹配包含_20字符串的任何字符串。

LIKE语句会扫描表中的所以行,因此,索引对优化like语句来说没有任何效果。所以,使用LIKE操作符查询大量数据时,其性能非常低。

****:程序猿 寄语:
1、作为一个真正的程序员,首先应该尊重编程,热爱你所写下的程序,他是你的伙伴,而不是工具。
2、程序员可以让步,却不可以退缩,可以羞涩,却不可以软弱,总之,程序员必须是勇敢的。
3、编程是一种单调的生活,因此程序员比普通人需要更多的关怀,更多的友情。
4、程序不是年轻的专利,但是,他属于年轻。
5、没有情调,不懂浪漫,也许这是程序员的一面,但拥有朴实无华的爱是他们的另一面。
6、一个好汉三个帮,程序员同样如此。
7、一个100行的代码调试都可能会让程序员遇到很多挫折,所以,面对挫折,我们永远不能低头。
8、调试完一个动态连接函数,固然值得兴奋,但真正的成功远还在无数个函数之后。
9、程序是我的生命,但我相信爱她甚过爱我的生命。
10、信念和目标,必须永远洋溢在程序员内心。
11、就算我们站在群山之颠,也别忘记雄鹰依旧能从我们头顶飞过。骄傲是比用JAVA进行底层开发更可笑的东西。
12、这句话不是很文雅,彻底鄙视那些害怕别人超越自己而拒绝回答别人问题的程序员。
13、如果调试一个程序让你很苦恼,千万不要放弃,成功永远在拐角之后,除非你走到拐角,否则你永远不知道你离他多远,所以,请记住,坚持不懈,直到成功。
14、最累的时候,家人是你最好的归宿。