SQL LIKE 和 NOT LIKE 运算符

我们使用 SQL LIKE 运算符与 WHERE 子句一起,以获取匹配给定字符串模式的结果集。

示例

-- select customers who live in the UK 

SELECT first_name
FROM Customers
WHERE country LIKE 'UK';

这里,SQL 命令选择 countryUK 的客户的姓氏。


SQL LIKE 语法

SELECT column1, column2, ...
FROM table
WHERE column LIKE value;

这里,

  • column1,column2, ... 是要从中选择数据的列
  • table 是表的名称。
  • column 是我们要应用过滤器的列
  • LIKEcolumnvalue 进行匹配
  • value 是您希望在指定 column 中匹配的模式

示例:SQL LIKE

-- select customers who live in the UK

SELECT *
FROM Customers
WHERE country LIKE 'UK';

这里,SQL 命令选择 countryUK 的客户。

How to use LIKE operator in SQL
示例:SQL LIKE

注意:尽管在本例中 LIKE 运算符的行为与 = 运算符相似,但它们并不相同。= 运算符用于检查相等性,而 LIKE 运算符仅用于匹配字符串模式。


SQL LIKE 与通配符

SQL LIKE 与 % 通配符

SQL LIKE 查询通常与 % 通配符一起使用,以匹配字符串模式。例如,

-- select customers whose
-- last name starts with R

SELECT *
FROM Customers
WHERE last_name LIKE 'R%';

这里,% 是一个通配符。因此,SQL 命令选择 last_nameR 开头,后面跟着零个或多个字符的客户。

What are wildcards in SQL
示例:SQL 通配符
SQL LIKE 与 _ 通配符

我们可以与 LIKE 一起使用更多的通配符。

让我们看一个使用 _ 通配符的示例。

-- select customers whose 
-- country names start with U 
-- followed by a single character

SELECT *
FROM Customers
WHERE country LIKE 'U_';

这里,SQL 命令选择 country 名称以 U 开头,后面跟着一个字符的客户。


SQL NOT LIKE 运算符

我们还可以通过与 LIKE 运算符一起使用 NOT 运算符来反转其工作方式。这将返回不匹配给定字符串模式的结果集。


语法

SELECT column1, column2, ...
FROM table_name
WHERE column NOT LIKE value;

这里,

  • column1,column2, ... 是要从中选择数据的列
  • table_name 是表的名称
  • column 是我们要应用过滤器的列
  • NOT LIKE 忽略 columnvalue 的匹配
  • value 是您不希望在指定 column 中匹配的模式

例如,

-- select customers who don't live in the USA

SELECT *
FROM Customers
WHERE country NOT LIKE 'USA';

这里,SQL 命令选择所有客户,除了 countryUSA 的客户。


SQL LIKE 与多个值

我们可以使用 LIKE 运算符与 OR 运算符一起使用多个字符串模式。例如,

-- select customers whose last_name starts with R and ends with t
-- or customers whose last_name ends with e
 
SELECT *
FROM Customers
WHERE last_name LIKE 'R%t' OR last_name LIKE '%e';

这里,SQL 命令选择 last_nameR 开头并以 t 结尾的客户,或者 last_namee 结尾的客户。


另请阅读

在结束之前,让我们测试一下您对 SQL LIKE 和 NOT LIKE 运算符的知识!您能解决以下挑战吗?

挑战

编写一个 SQL 查询来检索不包含任何元音的产品名称。

假设您有一个名为 **Products** 的表。该表的架构如下

产品 (Products)

列名

数据类型

product_id

int

product_name

varchar(100)

您的任务是编写一个 SQL 查询,以检索不包含任何元音(AEIOU)的产品名称。

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战