MySQL LIKE 用法与实例

本文介绍了在 MySQL 中如何使用 LIKE 运算符查询匹配指定模式的数据。

在 MySQL 中, LIKE 运算符可以根据指定的模式过滤数据。LIKE 运算符一般用于模糊匹配字符数据。

MySQL LIKE语法

LIKE 运算符是一个双目比较运算符,需要两个操作数。 LIKE 运算符语法如下:

expression LIKE pattern

说明:

  • expression 可以是一个字段名、值或其他的表达式(比如函数调用、运算等)。
  • pattern 是一个字符串模式。MySQL 字符串模式支持两个通配符: % 和 _。
    • % 匹配零或多个任意字符。
    • _ 匹配单个任意字符。
    • 如果需要匹配通配符,则需要使用 \ 转义字符,如 % 和 _。
    • 使用通配符匹配文本时,不区分字母大小写。
  • 如果 expression 与 pattern 匹配,LIKE 运算符返回 1,否则返回 0。

比如:

  • a% 匹配以字符 a 开头的任意长度的字符串。
  • %a 匹配以字符 a 结尾的任意长度的字符串。
  • %a% 匹配包含字符 a 的任意长度的字符串。
  • %a%b% 匹配同时包含字符 a 和 b 且 a 在 b 前面的任意长度的字符串。
  • a_ 匹配以字符 a 开头长度为 2 字符串。
  • _a 匹配以字符 a 结尾长度为 2 字符串。

MySQL LIKE运算规则

LIKE 运算符用于模糊匹配字符串数据。它的运算规则如下:

  • 当 LIKE 运算符左侧的操作数与右侧的模式匹配时,返回 1。否则,返回 0。
SELECT 'a' LIKE 'a', 'a' LIKE 'a%', 'ab' LIKE 'a%', 'ab' LIKE '%a';
+--------------+---------------+----------------+----------------+
| 'a' LIKE 'a' | 'a' LIKE 'a%' | 'ab' LIKE 'a%' | 'ab' LIKE '%a' |
+--------------+---------------+----------------+----------------+
|            1 |             1 |              1 |              0 |
+--------------+---------------+----------------+----------------+
SELECT 'a' LIKE 'a_', 'ab' LIKE 'a_', 'abc' LIKE 'a_';
+---------------+----------------+-----------------+
| 'a' LIKE 'a_' | 'ab' LIKE 'a_' | 'abc' LIKE 'a_' |
+---------------+----------------+-----------------+
|             0 |              1 |               0 |
+---------------+----------------+-----------------+
  • 如果 LIKE 运算符的两个操作数中任意一个为 NULL 时,返回 NULL。
SELECT NULL LIKE 'a%', 'a' LIKE NULL;
+----------------+---------------+
| NULL LIKE 'a%' | 'a' LIKE NULL |
+----------------+---------------+
|           NULL |          NULL |
+----------------+---------------+

MySQL LIKE实例

使用 % 号匹配结尾

  • 查询姓的学生信息
SELECT * FROM students WHERE name LIKE '周%';
+------------+--------+------+--------+
| student_id | name   | age  | gender |
+------------+--------+------+--------+
| 003        | 周易   |   18 ||
| 007        | 周末离 |   18 ||
| 009        | 周一   |   18 ||
+------------+--------+------+--------+
3 rows in set (0.06 sec)

使用 _ 匹配单个字符

  • 查询姓名字为单字的学生信息:
SELECT * FROM students WHERE name LIKE '周_';
+------------+------+------+--------+
| student_id | name | age  | gender |
+------------+------+------+--------+
| 003        | 周易 |   18 ||
| 009        | 周一 |   18 ||
+------------+------+------+--------+
2 rows in set (0.00 sec)

使用 % 匹配包含字符

  • 查询名字中包含的学生信息
SELECT * FROM students WHERE name LIKE '%总%';
+------------+--------+------+--------+
| student_id | name   | age  | gender |
+------------+--------+------+--------+
| 006        | 李总结 |   19 ||
+------------+--------+------+--------+
1 row in set (0.00 sec)

NOT LIKE

一下SQL语句使用NOT运算符与LIKE运算符从students表中检索名字不以开头的学生信息:

SELECT * FROM students WHERE name NOT LIKE '周%';
+------------+--------+------+--------+
| student_id | name   | age  | gender |
+------------+--------+------+--------+
| 001        | 丁一   |   18 ||
| 002        | 战书   |   19 ||
| 004        | 赵云   |   20 ||
| 005        | 解放   |   18 ||
| 006        | 李总结 |   19 ||
| 008        | 谢村花 |   18 ||
| 010        | 刘星   |   19 ||
| 011        | 夏雨   |   18 ||
| 012        | 夏天   |   18 ||
+------------+--------+------+--------+
9 rows in set (0.01 sec)

结论

本文通过实例介绍了 MySQL 中 LIKE 运算符的语法和用法。 LIKE 运算符的用法要点如下:

  • LIKE 运算符是双目运算符。
  • LIKE 运算符来文本值是否与指定的文本模式匹配。
  • % 通配符匹配零个或多个任意字符。
  • _ 通配符匹配单个任意字符。
  • 使用通配符匹配文本时,不区分字母大小写。
  • 当通配字符想要作为普通字符时,使用转义字符 (\) 进行转义。
  • 使用 NOT 运算符来否定 LIKE 运算符。
  • 借助通配符,可以匹配文本开头、文本结尾、包含字符串等。

⬅️ Mysql基础教程(07):BETWEEN

Mysql基础教程(09):ORDER BY →

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐