在 MySQL 中,LIKE 关键字主要用于搜索匹配字段中的指定内容。其语法格式如下:

[NOT] LIKE  '字符串'

其中:

NOT :可选参数,字段中的内容与指定的字符串不匹配时满足条件。

字符串:指定用来匹配的字符串。“字符串”可以是一个很完整的字符串,也可以包含通配符。

LIKE 关键字支持百分号“%”和下划线“_”通配符。

通配符是一种特殊语句,主要用来模糊查询。当不知道真正字符或者懒得输入完整名称时,可以使用通配符来代替一个或多个真正的字符。

带有“%”通配符的查询

“%”是 MySQL 中最常用的通配符,它能代表任何长度的字符串,字符串的长度可以为 0。例如,a%b表示以字母 a 开头,以字母 b 结尾的任意长度的字符串。该字符串可以代表 ab、acb、accb、accrb 等字符串。

例 1

在 tb_students_info 表中,查找所有以字母“T”开头的学生姓名,SQL 语句和运行结果如下。

mysql> SELECT name FROM tb_students_info

-> WHERE name LIKE 'T%';

+--------+

| name |

+--------+

| Thomas |

| Tom |

+--------+

2 rows in set (0.12 sec)

可以看到,查询结果中只返回了以字母“T”开头的学生姓名。

注意:匹配的字符串必须加单引号或双引号。

NOT LIKE 表示字符串不匹配时满足条件。

例 2

在 tb_students_info 表中,查找所有不以字母“T”开头的学生姓名,SQL 语句和运行结果如下。

mysql> SELECT NAME FROM tb_students_info

-> WHERE NAME NOT LIKE 'T%';

+-------+

| NAME |

+-------+

| Dany |

| Green |

| Henry |

| Jane |

| Jim |

| John |

| Lily |

| Susan |

+-------+

8 rows in set (0.00 sec)

可以看到,查询结果中返回了不以字母“T”开头的学生姓名。

例 3

在 tb_students_info 表中,查找所有包含字母“e”的学生姓名,SQL 语句和运行结果如下。

mysql> SELECT name FROM tb_students_info

-> WHERE name LIKE '%e%';

+-------+

| name |

+-------+

| Green |

| Henry |

| Jane |

+-------+

3 rows in set (0.00 sec)

可以看到,查询结果中返回了所有包含字母“e”的学生姓名。

带有“_”通配符的查询

“_”只能代表单个字符,字符的长度不能为 0。例如,a_b可以代表 acb、adb、aub 等字符串。

例 4

在 tb_students_info 表中,查找所有以字母“y”结尾,且“y”前面只有 4 个字母的学生姓名,SQL 语句和运行结果如下。

mysql> SELECT name FROM tb_students_info

-> WHERE name LIKE '____y';

+-------+

| name |

+-------+

| Henry |

+-------+

1 row in set (0.00 sec)

LIKE 区分大小写

默认情况下,LIKE 关键字匹配字符的时候是不区分大小写的。如果需要区分大小写,可以加入 BINARY 关键字。

例 5

在 tb_students_info 表中,查找所有以字母“t”开头的学生姓名,区分大小写和不区分大小写的 SQL 语句和运行结果如下。

mysql> SELECT name FROM tb_students_info WHERE name LIKE 't%';

+--------+

| name |

+--------+

| Thomas |

| Tom |

+--------+

2 rows in set (0.00 sec)

mysql> SELECT name FROM tb_students_info WHERE name LIKE BINARY 't%';

Empty set (0.01 sec)

由结果可以看到,区分大小写后,“Tom”和“Thomas”等记录就不会被匹配到了。

使用通配符的注意事项和技巧

下面是使用通配符的一些注意事项:

注意大小写。MySQL 默认是不区分大小写的。如果区分大小写,像“Tom”这样的数据就不能被“t%”所匹配到。

注意尾部空格,尾部空格会干扰通配符的匹配。例如,“T% ”就不能匹配到“Tom”。

注意 NULL。“%”通配符可以到匹配任意字符,但是不能匹配 NULL。也就是说 “%”匹配不到 tb_students_info 数据表中值为 NULL 的记录。

下面是一些使用通配符要记住的技巧。

不要过度使用通配符,如果其它操作符能达到相同的目的,应该使用其它操作符。因为 MySQL 对通配符的处理一般会比其他操作符花费更长的时间。

在确定使用通配符后,除非绝对有必要,否则不要把它们用在字符串的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。

仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。

总之,通配符是一种极其重要和有用的搜索工具,以后我们会经常用到它。

拓展

如果查询内容中包含通配符,可以使用“\”转义符。例如,在 tb_students_info 表中,将学生姓名“Dany”修改为“Dany%”后,查询以“%”结尾的学生姓名,SQL 语句和运行结果如下:

mysql> SELECT NAME FROM test.`tb_students_info` WHERE NAME LIKE '%\%';

+-------+

| NAME |

+-------+

| Dany% |

+-------+

1 row in set (0.00 sec)

mysql like_MySQL LIKE:模糊查询相关推荐

  1. MySQL基础_模糊查询—between and in is null <=>(安全等于)等关建字

    文章目录 MySQL基础_模糊查询-in关键字 MySQL基础_模糊查询-is null关键字 MySQL基础_[补充]安全等于的介绍 eg: select * from table where 字段 ...

  2. mysql LOCATE() 函数 模糊查询,类似like %%

    mysql LOCATE() 函数 模糊查询,类似like '%%' 查询的字符串 前面添加 BINARY ,区分大小写 SELECT * FROM `ce1` WHERE locate(BINARY ...

  3. mysql 用户通配符_浅谈mysql通配符进行模糊查询的实现方法

    在mysql数据库中,当我们需要模糊查询的时候 ,我们会使用到通配符. 首先我们来了解一下2个概念,一个是操作符,一个是通配符. 操作符 like就是SQL语句中的操作符,它的作用是指示在SQL语句后 ...

  4. MySQL多重条件模糊查询_简单实现mysql多字段模糊查询

    在后台的项目中,会经常遇到,就是信息的查找,这里就举个简单的例子,如搜索某一个产品的信息,在一个表里面有多个字段,而搜索的内容可能是其中的某个字段,这样只有多字段查询才能实现. MySQL多字段模糊查 ...

  5. python中的mysql数据库like模糊查询

    近期工作在使用python语言开发项目,工作中遇到了一个python连接mysql的like查询. 因为%在python中三个特殊的符号,如%s.%d分别代表了字符串占位符和数字占位符. 大家知道.m ...

  6. mysql 4 中文模糊查询_解决MySQL中文模糊查询问题

    解决MySQL中文模糊查询问题: 我们在MySQL中进行中文模糊查询时,经常会返回一些与之不相关的记录,比如查找 "%a%" 时,返回的可能有中文字符,却没有 a 字符存在.对于此 ...

  7. mysql模糊查询占位符python_python中的mysql数据库like模糊查询

    最近工作在使用python语言开发项目,工作中遇到了一个python连接mysql的like查询. 由于%在python中三个特殊的符号,如%s,%d分别代表了字符串占位符和数字占位符. 大家知道,m ...

  8. mysql中的模糊查询(非原创)

    Mysql 使用通配符进行模糊查询(like,%,_) 通配符的分类 1)%百分号通配符: 表示任何字符出现任意次数 (可以是0次). 2)_下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一 ...

  9. mysql 索引的模糊查询_MYSQL语法(模糊查询,视图,索引)

    MYSQL语法(模糊查询,视图,索引) 2020年08月11日 | 萬仟网IT编程 | 我要评论 MYSQL模糊查询模糊查询,查询name 以张开头的数据select *from t1 where n ...

  10. 关于解决MYSQL的like模糊查询效率的一种方案

    大家都知道like %suibin% 这种查询的效率极低,而MYSQL也建议不要这样模糊查询,常用的是把数据同步到CACHE里: 1.比如同步到ES里用ES模糊查询.或者同步数据到MongoDB实现模 ...

最新文章

  1. pytorch:一维线性回归(二)
  2. P7116-[NOIP2020]微信步数【数学】
  3. 多元线性回归matlab代码例题_多元线性回归matlab程序
  4. SpringBoot之获取配置文件中的数据
  5. 无法删除oracle用户的问题
  6. HTC推区块链手机;微软终于更新Windows Notepad;Python之父退出决策层 | 极客头条...
  7. 外媒:美国降雪引发事故 2天内造成3人死亡2人受伤
  8. MySQL的回表查询与索引覆盖查询
  9. MATLAB实现智能优化算法
  10. 根据车辆型号自动生成车辆编号
  11. pm2开机启动项目脚本
  12. Linux 安装 l2tp
  13. 操作系统--多线程进阶(上)
  14. Java学习比较好的书籍资料
  15. 通过身份证号码得出性别和年龄
  16. 关于内存、外存、磁盘、硬盘、软盘、光盘的区别
  17. 【BeetSQL入门学习】
  18. X Lossless Decoder for mac(XLD无损音频转码软件)
  19. ISO26262第二版发布
  20. 初学前端用代码实现一个网页老虎机游戏

热门文章

  1. 阿里云2020上云采购季,你适合买什么云产品?
  2. 如何在一分钟内实现微服务系统下的架构可视化
  3. 隐私与机器学习,二者可以兼得吗?
  4. 华为云专属月·行业深耕专项行动正式开启
  5. 漫话:如何给女朋友解释鸿蒙OS是怎样实现跨平台的?
  6. 面试鹅厂,我三面被虐的体无完肤……
  7. 关于云原生,这是最详细的技术知识
  8. python循环一百次_python循环
  9. host文件注释 ubuntu_Redis and MongoDB 设置密码验证(scrapy)(win)(ubuntu)
  10. AI是计算机科学,人工智能计算机科学(79种)...