跳到主要内容

SQL中的LIKE和NOT LIKE运算符

提示
  1. LIKE 运算符的功能:SQL 中的 LIKE 运算符结合 WHERE 子句使用,用于筛选匹配特定字符串模式的数据。
  2. LIKE 与通配符LIKE 运算符常与通配符(如 % 表示任意多个字符,_ 表示单个字符)一起使用,以匹配复杂的字符串模式。
  3. NOT LIKE 运算符:使用 NOT LIKE 可以反转 LIKE 的行为,选择不匹配指定模式的数据。此外,LIKE 还可以与 OR 运算符一起使用,匹配多个不同的字符串模式。

SQL LIKE 运算符

SQL 中的 LIKE 运算符与 WHERE 子句 一起使用,以获取与给定字符串模式匹配的结果集。它的语法如下:

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

这里,

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

例如,

SELECT *
FROM Customers
WHERE country LIKE 'UK';

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

如何在 SQL 中使用 LIKE 运算符

注意: 虽然在这个例子中 LIKE 运算符的行为类似于 = 运算符,但它们并不相同。= 运算符用于检查相等性,而 LIKE 运算符仅用于匹配字符串模式。

SQL LIKE 与通配符

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

```sql exec-- SQL LIKE 查询带通配符 SELECT * FROM Customers WHERE last_name LIKE 'R%';


这里,`%`(表示零个或多个字符)是通配符。因此,SQL 命令选择了以 **R** 开头并在其后跟零个或多个字符的客户。

![SQL 中的通配符是什么](img/sql-wildcards.png)

### 示例:SQL `LIKE` 与通配符

我们可以使用更多的[通配符](/tutorials/sql/wildcards)与 `LIKE` 一起使用。让我们看看另一个使用 `_` 通配符的示例。

```sql exec-- 选择国家名称以 U 开头后跟一个字符的客户
SELECT *
FROM Customers
WHERE country LIKE 'U_';

这里,SQL 命令选择了 country 名称以 U 开头并紧接着一个字符的客户。

SQL NOT LIKE 运算符

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

SQL NOT LIKE 运算符的语法如下:

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

这里,

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

例如,

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

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

SQL LIKE 与多个值

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

-- 或者姓氏以 e 结尾的客户
SELECT *
FROM Customers
WHERE last_name LIKE 'R%t' OR last_name LIKE '%e';

这里,SQL 命令选择了姓氏