• (转)MySQL数据表中带LIKE的字符匹配查询


    MySQL数据表中带LIKE的字符匹配查询


    2014年07月15日09:56    百科369


    MySQL数据表中带LIKE的字符匹配查询

    LIKE关键字可以匹配字符串是否相等。

    • 如果字段的值与指定的字符串相匹配,则符合查询条件,该记录将被查询出来。
    • 如果与指定的字符串不匹配,则不符合查询条件。

    基本的语法格式如下:

    [NOT] LIKE '字符串'

    NOT:可选。加上NOT表示与指定的字符串不匹配时满足条件。

    字符串:指定用于匹配的字符串,该字符串必须加单引号或者双引号。

    “字符串”参数的值可以是一个完整的字符串,也可以是包含百分号(%)或者下划线(_)的通配符。

    注意%和_的区别:

    • “%”表示任意长度的字符串,长度可以为0。例如,g%gle表示以字母g开头,以字母gle结尾的任意长度的字符串。g%gle可以表示ggle、gogle、gfgle、google、gusgle、gooooogle等。
    • “_”只能表示单个字符。例如,g_gle表示以字母g开头,以字母gle结尾的5个字符。中间的“_”可以表示任意一个字符。g_gle可以表示gagle、gbgle、gcgle、gdgle或gogle等。

    实例1

    使用LIKE关键字匹配一个完整的字符串'Tom'。SELECT语句的代码如下:

    SELECT * FROM employee WHERE  name LIKE 'Tom';

    在DOS提示符窗口中查看使用LIKE关键字匹配一个完整的字符串'Tom'的操作效果。如下图所示:

    查看使用LIKE关键字匹配一个完整的字符串'Tom'的操作效果

    上图中代码执行的结果显示,name字段中取值为Tom的记录被查询了出来。其它不符合条件的记录都被过滤掉了。

    在这里,LIKE与等于号(=)是等价的。如果修改为“=”,查询结果是一样的。如下图所示:

    LIKE与等于号(=)的查询结果一样

    但是,上面的情况只对匹配一个完整的字符串有效,如果字符串中包含了通配符,就不能这样进行替换了。


    实例2

    使用LIKE关键字匹配带有通配符“%”的字符串'河南%'。SELECT语句的代码如下:

    SELECT * FROM employee WHERE homeaddress LIKE '河南%';

    在DOS提示符窗口中查看使用LIKE关键字匹配带有通配符“%”的字符串'河南%'的操作效果。如下图所示:

    查看使用LIKE关键字匹配带有通配符“%”的字符串'河南%'的操作效果

    上图中代码执行的结果显示,homeaddress字段以“河南”开头的记录都被查询出来了。

    如果使用“=”替换LIKE时,则查询结果为空记录。如下图所示:

    使用“=”替换LIKE时,则查询结果为空记录

    上图中代码执行的结果显示,没有查询出任何记录。这说明字符串中包含了通配符时,“=”就不能代替LIKE了。


    实例3

    使用LIKE关键字匹配带有通配符“_”的字符串'T_m'。SELECT语句的代码如下:

    SELECT * FROM employee WHERE name LIKE 'T_m';

    在DOS提示符窗口中查看使用LIKE关键字匹配带有通配符“_”的字符串'T_m'的操作效果。如下图所示:

    查看使用LIKE关键字匹配带有通配符“_”的字符串'T_m'的操作效果

    上图中代码执行的结果显示,name字段中取值为Tom的记录被查询出来了。

    “_”只能代表一个字符。如果字符串为“T_”,将不能查询出结果。如下图所示:

    没有字符串为“T_”的记录

    上图中代码执行的结果显示,没有查询出任何记录。因为name字段中不存在以“T”开头,长度为2的记录。

    提示

    需要匹配的字符串需要加引号,可以是单引号,也可以是双引号。在MySQL 5.6.19版本中,使用一个“_”符号也可以代表一个汉字。如下图所示:

    一个“_”符号也可以代表一个汉字

    如果使用一个“_”符号代表一个汉字时,不能正确查询出记录,则可以使用两个“_” 符号来代表一个汉字,再查询一下试试。毕竟,一般情况下,一个汉字是两个字符,它需要两个“_”符号来代表一个汉字。

    使用LIKE关键字匹配带有通配符“_”的字符串'_雪_'。SELECT语句的代码如下:

    SELECT * FROM employee WHERE name LIKE '_雪_';

    在DOS提示符窗口中查看使用LIKE关键字匹配带有通配符“_”的字符串'_雪_'的操作效果。如下图所示:

    查看使用LIKE关键字匹配带有通配符“_”的字符串'_雪_'的操作效果

    上图中代码执行的结果显示,name字段中,中间一个汉字为“雪”的三个汉字的名字被查询了出来。

    NOT LIKE表示字符串不匹配的情况下符合条件。


    实例4

    使用NOT LIKE关键字查询不是姓刘的所有人的记录。SELECT语句的代码如下:

    SELECT * FROM employee WHERE name NOT LIKE "刘%";

    在DOS提示符窗口中查看使用NOT LIKE关键字查询不是姓刘的所有人的记录的操作效果。如下图所示:

    查看使用NOT LIKE关键字查询不是姓刘的所有人的记录的操作效果

    上图中代码执行的结果显示,name字段中取值为“刘兵”的记录被排除出去了。


    实例5

    使用LIKE关键字匹配带有通配符“%”的字符串'%军'。SELECT语句的代码如下:

    SELECT * FROM employee WHERE name LIKE '%军';

    在DOS提示符窗口中查看使用LIKE关键字匹配带有通配符“%”的字符串'%军'的操作效果。如下图所示:

    查看使用LIKE关键字匹配带有通配符“%”的字符串'%军'的操作效果

    上图中代码执行的结果显示,name字段中最后一个字为“军”的所有人的记录被查询了出来。


    实例6

    使用LIKE关键字匹配带有通配符“%”的字符串'%雪%'。SELECT语句的代码如下:

    SELECT * FROM employee WHERE name LIKE '%雪%';

    在DOS提示符窗口中查看使用LIKE关键字匹配带有通配符“%”的字符串'%雪%'的操作效果。如下图所示:

    查看使用LIKE关键字匹配带有通配符“%”的字符串'%雪%'的操作效果

    上图中代码执行的结果显示,name字段中,中间任意位置为“雪”的人的名字的记录都被查询了出来。


    提示

    使用LIKE和NOT LIKE关键字可以很好匹配字符串。而且,可以使用“%”和“_”等通配符来简化查询。

    ---- 动动手指关注我!或许下次你又能在我这里找到你需要的答案!ZZZZW与你一起学习,一起进步!
  • 相关阅读:
    BZOJ4003:[JLOI2015]城池攻占——题解
    洛谷3388:【模板】割点(割顶)——题解
    洛谷3805:【模板】manacher算法——题解
    BZOJ3236:[AHOI2013]作业——题解
    SPOJ3267/DQUERY:D-query——题解
    自动化移动安全渗透测试框架:Mobile Security Framework
    爬取京东评论,且修改网址直接可复用哦(送代码)
    谈谈从事IT测试行业的我,对于买房买车有什么样的感受
    python调用adb命令进行手机操作
    python selenium 处理时间日期控件
  • 原文地址:https://www.cnblogs.com/zzzzw/p/5084388.html
Copyright © 2020-2023  润新知