SQL LIKE 运算符

2025年7月24日 | 阅读 10 分钟

LIKE 是结构化查询语言 (SQL) 中的一个逻辑运算符,用于在数据库中根据模式搜索数据。此 SQL 运算符在 WHERE 子句中使用,并可与以下三种语句结合使用:

  1. SELECT 语句
  2. UPDATE 语句
  3. DELETE 语句

它根据 SQL 查询中指定的模式过滤列中的记录。

以下是与 SQL LIKE 运算符结合使用或独立使用的两个通配符:

  1. % (百分号):此通配符匹配零个、一个或多个字符。
  2. _ (下划线):此通配符仅匹配一个字符。

SQL 中 LIKE 运算符的语法

在此语法中,SELECT 关键字用于选择我们要检索的列,FROM 关键字用于选择我们要从中选择列的表,WHERE 子句包含条件,LIKE 运算符用于搜索定义好的模式,而 pattern 是必须在 WHERE 子句之后指定的列中搜索的一系列字符。

注意:LIKE 运算符不区分大小写,这意味着如果您搜索 'google',它将返回包含 'Google'、'GOOGLE'、'GOogle' 等的输出。

SQL 中 LIKE 运算符的示例

在本文中,我们采用了以下不同的 SQL 示例,以帮助您理解如何使用 LIKE 运算符:

示例 1

让我们采用以下 Employees 表,以帮助您分析带 % 符号的 LIKE 运算符。

Emp_ID名称Emp_SalaryEmp_Dept
1001Vivek9000.00融资
1002Saket4000.00HR
1003拉曼 (Raman)3000.00编码
1004Suraj6000.00编码
1005Seenu5000.00HR
1006Shubham10000.00营销
1007Anaya4000.00编码
1008Parul8000.00融资

i) 假设您想筛选出名字以“S”开头的员工记录。为此操作,您需要键入以下查询:

此查询在输出中显示以下表:

Emp_ID名称Emp_SalaryEmp_Dept
1002Saket4000.00HR
1004Suraj6000.00编码
1005Seenu5000.00HR
1006Shubham10000.00营销

ii) 假设您想筛选出部门名称以“g”结尾的员工记录。为此操作,您需要键入以下查询:

此查询在输出中显示以下表:

Emp_ID名称Emp_SalaryEmp_Dept
1003拉曼 (Raman)3000.00编码
1004Suraj6000.00编码
1006Shubham10000.00营销
1007Anaya4000.00编码

iii) 假设您想显示部门名称以“C”开头并以“g”结尾的员工的姓名和薪资。为此操作,您需要键入以下查询:

此查询在输出中显示以下表:

名称Emp_Salary
拉曼 (Raman)3000.00
Suraj6000.00
Anaya4000.00

iv) 假设您想从上述员工表中显示名字在任何位置包含字母“a”的所有员工记录。为此操作,您需要键入以下查询:

此查询在输出中显示以下表:

Emp_ID名称Emp_SalaryEmp_Dept
1002Saket4000.00HR
1003拉曼 (Raman)3000.00编码
1004Suraj6000.00编码
1006Shubham10000.00营销
1007Anaya4000.00编码
1008Parul8000.00融资

示例 2

让我们采用以下 Students 表,以帮助您分析带 _ (下划线) 符号的 LIKE 运算符。

Roll_No名称分数年龄
1拉曼 (Raman)9520
2Kapil6019
3Arun8517
4Ram9218
5Suman5520
6Sanjay8818
7Sheetal6519
8Rakesh6420

i) 假设您想显示名字在第二个位置包含“a”的所有学生记录。为此操作,您需要键入以下带下划线符号的查询:

此查询在输出中显示以下表:

Roll_No名称分数年龄
1拉曼 (Raman)9520
2Kapil6019
4Ram9218
6Sanjay8818
8Rakesh6420

ii) 假设您想访问名字至少包含 3 个字符且以字母“S”开头的学生记录。为此操作,您需要键入以下查询:

在此查询中,您需要在 S 字符后使用三次下划线。上述查询将在输出中显示以下表:

Roll_No名称分数年龄
5Suman5520
6Sanjay8818
7Sheetal6519

iii) 假设您想访问名字包含 2 位数字且以“5”结尾的学生的 Roll_No、Name 和 Marks。

上述查询将在输出中显示以下表:

Roll_No名称分数
1拉曼 (Raman)95
3Arun85
5Suman55
7Sheetal65

在 UPDATE 语句中使用 Like

在 SQL 中,我们也可以在 UPDATE 语句的 WHERE 子句中使用 LIKE 运算符。LIKE 运算符更新表中满足查询中指定模式的记录。

LIKE 与 UPDATE 语句的语法

在上述语法中,UPDATE 关键字用于修改数据,SET 关键字用于选择列并为其赋予新值,而 WHERE 子句用于结合 LIKE 运算符给出基于模式的条件。

LIKE 与 UPDATE 语句的示例

这里,我们采用了以下两个不同的 SQL 示例,以帮助您理解如何将 LIKE 运算符与 UPDATE 语句结合使用来更新表中的现有记录。

示例 1

让我们采用以下 Projects 表,我们将使用它来展示如何使用 UPDATE 语句中的 LIKE 运算符与 % (百分号) 符号来更新记录。

Project_IDProject_NameStart_DateEnd_Date预算地位
101Website Redesign2025-04-012025-06-1025000.00完成
102移动应用开发2025-03-10NULL40000.00Ongoing
103云迁移2025-01-052025-06-3060000.00Ongoing
104SEO Optimization2024-04-01NULL15000.00On Hold
105Data Analytics Platform2024-06-01NULL80000.00Ongoing

i) 假设您想更新那些在 2024 年开始的项目状态。为此操作,您需要输入以下带百分号的查询:

上述查询将那些在 2024 年开始的项目状态设置为 Completed,如果您想查看表中的更改,则需要输入以下查询:

Project_IDProject_NameStart_DateEnd_Date预算地位
101Website Redesign2025-04-012025-06-1025000.00完成
102移动应用开发2025-03-10NULL40000.00Ongoing
103云迁移2025-01-052025-06-3060000.00Ongoing
104SEO Optimization2024-04-01NULL15000.00完成
105Data Analytics Platform2024-06-01NULL80000.00完成

ii) 假设您想更新那些开始日期以“01”结尾的项目的结束日期。为此操作,您需要输入以下带百分号的查询:

上述查询将那些开始日期以“01”结尾的项目的结束日期设置为。如果您只想检索 Project_NameStart_DateStatus 列并查看表中的更改,则需要输入以下查询:

Project_NameStart_Date地位
Website Redesign2025-04-01完成
移动应用开发2025-03-10Ongoing
云迁移2025-01-05Ongoing
SEO Optimization2024-04-01完成
Data Analytics Platform2024-06-01完成

iii) 假设您想更新那些项目名称以“cloud”开头(百分号)的项目状态。为此操作,您需要输入以下带百分号的查询:

上述查询将那些项目名称以“cloud”开头(百分号)的项目状态设置为“In Review”,如果您想查看表中的更改,则需要输入以下查询:

上述 SQL 查询将仅从 Projects 表中检索 Project_IDProject_NameStatus 列。

Project_IDProject_Name地位
101Website Redesign完成
102移动应用开发Ongoing
103云迁移In Review
104SEO Optimization完成
105Data Analytics Platform完成

示例 2

让我们采用以下 Movies 表,它向您展示如何使用 _ (下划线) 符号的 LIKE 运算符与 UPDATE 语句来更新记录。

Movie_ID标题类型语言Release_Year
1InceptionSci-Fi英文2010
23 IdiotsComedy-Drama印地语2009
3ParasiteThrillerKorean2019
4InterstellarSci-Fi英文2014
5Dangal传记印地语2014
6The Dark Knight操作英文2008

i) 假设您想更新那些标题的第二个字母是“n”的电影的 Genre。为此操作,您需要输入以下带下划线符号的查询:

上述查询将标题的第二个字母是“n”的电影的 Genre 设置为。如果您想查看表中的更改,则需要输入以下查询:

上述 SQL 查询将仅从 Projects 表中检索 TitleGenre 列。

标题类型
InceptionMind Bending
3 IdiotsComedy-Drama
ParasiteThriller
InterstellarMind Bending
Dangal传记
The Dark Knight操作

ii) 假设您想更新那些标题以“pa”开头且长度为 8 个字符的电影的 Genre。为此操作,您需要输入以下带下划线符号的查询:

上述查询将那些标题恰好为 6 个字符的电影的 Genre 设置为,如果您想查看表中的更改,则需要输入以下查询:

上述 SQL 查询将仅从 Projects 表中检索 TitleGenre 列。

标题类型
InceptionMind Bending
3 IdiotsComedy-Drama
Parasite悬念
InterstellarMind Bending
Dangal传记
The Dark Knight操作

iii) 假设您想更新那些标题恰好为 6 个字符的电影的 Genre。为此操作,您需要输入以下带下划线符号的查询:

上述查询将那些标题恰好为 6 个字符的电影的 Genre 设置为,如果您想查看表中的更改,则需要输入以下查询:

上述 SQL 查询将仅从 Projects 表中检索 TitleGenre 列。

标题类型
InceptionMind Bending
3 IdiotsComedy-Drama
ParasiteThriller
InterstellarMind Bending
DangalBiopic
The Dark Knight操作

Like 与 DELETE 语句

在 SQL 中,我们也可以在 DELETE 语句的 WHERE 子句中使用 LIKE 运算符。LIKE 运算符删除或移除表中与 SQL 查询中指定的模式匹配的记录。

LIKE 与 DELETE 语句的语法

在上述语法中,DELETE 是一个用于从表中删除数据的关键字,WHERE 是一个用于应用条件的子句,而 LIKE 是一个用于基于给定模式匹配数据的运算符。

LIKE 与 DELETE 语句的示例

这里,我们采用了以下示例,以帮助您理解如何使用 LIKE 运算符与 DELETE 语句结合使用,从数据库表中删除现有记录。

让我们采用以下 Products 表,它向您展示如何使用 % (百分号) 和 _(下划线) 符号的 LIKE 运算符来删除记录。

Product_IDProduct_Name类别价格
1iPhone 15电子行业79999.00
2Samsung Galaxy S24电子行业72999.00
3Nike ShoesFootwear4999.99
4Levi’s Jeans服装1999.50
5Apple AirPods Pro电子行业22999.00
6Wooden Dining Table家具15999.00

i) 假设您想从 Products 表中删除其 Category 以“nics”结尾的记录。

此查询删除了 Category 以“nics”结尾的产品的记录。

Product_IDProduct_Name类别价格
3Nike ShoesFootwear4999.99
4Levi’s Jeans服装1999.50
6Wooden Dining Table家具15999.00

ii) 假设您想从 Products 表中删除产品名称恰好是 3 个单词的记录。

此查询删除了产品名称恰好是 3 个单词的产品的记录。

Product_IDProduct_Name类别价格
3Nike ShoesFootwear4999.99
4Levi’s Jeans服装1999.50

iii) 假设您想从 Products 表中删除产品名称的第三个字符是“k”的记录。

此查询删除了产品名称的第三个字符是“k”的产品的记录。

Product_IDProduct_Name类别价格
4Levi’s Jeans服装1999.50

结论

在本文中,我们学习了 SQL LIKE 运算符,它是一个与 WHERE 子句一起使用的运算符,用于在数据库中匹配特定模式。我们探讨了 % 和 _ SQL 通配符,它们用于匹配字符串数据中一个或多个字符。我们还了解了如何有效地将 LIKE 运算符与 SELECT、UPDATE 和 DELETE 语句结合使用,以根据模式匹配来筛选记录。

常见问题解答 (FAQs)

1. LIKE 运算符在 SQL 中的作用是什么?

在 SQL 中,like 运算符用于 WHERE 子句,以在列中搜索指定的值。我们使用 LIKE 运算符定义值的模式。

2. LIKE 运算符区分大小写吗?

LIKE 运算符的区分大小写取决于数据库。在 MySQL 中,默认情况下它不区分大小写,但在 PostgreSQL 或 SQL Server 中,它可能区分大小写。这取决于排序设置。

3. 如何在数字上使用 LIKE 运算符?

我们可以在数字上使用 LIKE 运算符,但在应用之前,数字会被转换为字符串。

4. LIKE 运算符在 SQL 查询中的工作原理是什么?

SQL 中的 LIKE 运算符在返回字符串值之前匹配模式。如果模式是固定前缀,它会利用索引优化。如果模式是通配符,则会进行全表扫描。

5. 如果我想按字面意思搜索 % 或 _,如何转义通配符?

我们可以使用 ESCAPE 关键字来转义通配符。语法如下:

上面的代码匹配“100% off”之类的字符串。