菜鸟教程 -- 学的不仅是技术,更是梦想!

SQL 教程
(追記) (追記ここまで)

SQL LIKE 操作符


LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

LIKE 操作符是 SQL 中用于在 WHERE 子句中进行模糊查询的关键字,它允许我们根据模式匹配来选择数据,通常与 %_ 通配符一起使用。

SQL LIKE 语法

SELECT column1, column2, ...
FROM table_name
WHERE column_name LIKE pattern;

参数说明:

  • column1, column2, ...:要选择的字段名称,可以为多个字段。如果不指定字段名称,则会选择所有字段。
  • table_name:要查询的表名称。
  • column:要搜索的字段名称。
  • pattern:搜索模式。

通配符

  • %:匹配任意字符(包括零个字符)。
  • _:匹配单个字符。

实例

假设我们有一个名为 Products 的表,包含以下数据:

ProductIDProductNameCategory
1iPhone 12Electronics
2Samsung Galaxy S21Electronics
3Dell XPS 13Electronics
4Nike Air ZoomFootwear
5Adidas UltraboostFootwear
6Sony PlayStation 5Electronics

使用 % 通配符找出所有以 "iPhone" 开头的产品:

SELECT ProductName, Category
FROM Products
WHERE ProductName LIKE 'iPhone%';

返回以下数据:

ProductNameCategory
iPhone 12Electronics

使用 _ 通配符找出所有产品名称第二个字符为 "e" 的产品:

SELECT ProductName, Category
FROM Products
WHERE ProductName LIKE '_e%';

返回以下数据:

ProductNameCategory
Dell XPS 13Electronics

结合 %_ 通配符找出所有产品名称包含 "Zoom" 的产品:

SELECT ProductName, Category
FROM Products
WHERE ProductName LIKE '%Zoom%';

返回以下数据:

ProductNameCategory
Nike Air ZoomFootwear


演示数据库

在本教程中,我们将使用 RUNOOB 样本数据库。

下面是选自 "Websites" 表的数据:

mysql> SELECT * FROM Websites;
+----+---------------+---------------------------+-------+---------+
| id | name | url | alexa | country |
+----+---------------+---------------------------+-------+---------+
| 1 | Google | https://www.google.cm/ | 1 | USA |
| 2 | 淘宝 | https://www.taobao.com/ | 13 | CN |
| 3 | 菜鸟教程 | http://www.runoob.com/ | 5000 | USA |
| 4 | 微博 | http://weibo.com/ | 20 | CN |
| 5 | Facebook | https://www.facebook.com/ | 3 | USA |
| 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND |
+----+---------------+---------------------------+-------+---------+


SQL LIKE 操作符实例

下面的 SQL 语句选取 name 以字母 "G" 开始的所有客户:

实例

SELECT * FROM Websites
WHERE name LIKE 'G%';

执行输出结果:

提示:"%" 符号用于在模式的前后定义通配符(默认字母)。您将在下一章中学习更多有关通配符的知识。

下面的 SQL 语句选取 name 以字母 "k" 结尾的所有客户:

实例

SELECT * FROM Websites
WHERE name LIKE '%k';

执行输出结果:

下面的 SQL 语句选取 name 包含模式 "oo" 的所有客户:

实例

SELECT * FROM Websites
WHERE name LIKE '%oo%';

执行输出结果:

通过使用 NOT 关键字,您可以选取不匹配模式的记录。

下面的 SQL 语句选取 name 不包含模式 "oo" 的所有客户:

实例

SELECT * FROM Websites
WHERE name NOT LIKE '%oo%';

执行输出结果:

AI 思考中...

3 篇笔记 写笔记

  1. #0

    zzt

    zhu***[email protected]

    356

    '%a' //以a结尾的数据

    'a%' //以a开头的数据

    '%a%' //含有a的数据

    ‘_a_’ //三位且中间字母是a的

    '_a' //两位且结尾字母是a的

    'a_' //两位且开头字母是a的

    zzt

    zhu***[email protected]

    9年前 (2018年01月12日)
  2. #0

    neza

    nez***[email protected]

    263
    学到这里,想起一个问题,如果里面包括 _ % 怎么转义,查下,可以通过 escape :
    select * from username where 用户名 like '段_%' -- 会查出来段煜 段鑫
    select * from username where 用户名 like '段\_%' escape '\' -- 通过 \转义,只能查出来 段_煜

    neza

    nez***[email protected]

    8年前 (2018年09月22日)
  3. #0

    灵车司机

    yan***[email protected]

    118

    like , not like

    描述:复杂过滤,模糊匹配 like 函数

    ABCMI123 LIKE %MI%
    ABC123MI LIKE %MI——MI结尾
    MIABC123 LIKE MI%——MI开头

    % 代表任意多个字符(可以是 0 个),_ 代表一个字符,__ 代表两个字符。

    SMITH LIKE 'S_I%'——匹配
    'SITH' LIKE 'S_I%'——不匹配
    'SMITH' LIKE 'S__T%'——匹配

    实例:列出姓名中含 MI 这 2 个字母的员工

    select *
    from emp
    where ename like '%MI%';

    灵车司机

    yan***[email protected]

    7年前 (2019年03月18日)

点我分享笔记

  • 昵称 (必填)
  • 邮箱 (必填)
  • 引用地址

AltStyle によって変換されたページ (->オリジナル) /