SQL Server WHERE 子句

17 Mar 2025 | 4 分钟阅读

SQL Server 中的 WHERE 子句用于从表中筛选记录。 这是一个可选子句,用于限制查询返回的行数。 我们也可以说,此子句指定一个条件,仅返回满足已定义条件的记录。 WHERE 子句也可以与 UPDATEDELETE 查询一起使用。

WHERE 子句的需求

当我们使用 SELECT 语句对表执行操作时,它将返回该表中的所有记录。如果我们的表有很多记录,SELECT 语句可能会返回不必要的数据,因为应用程序一次只处理一组行。在这种情况下,我们需要一些条件,只返回我们想在输出表中看到的数据。 因此,我们使用 WHERE 子句来限制查询从表中获取不必要的记录,并只返回满足 WHERE 子句中提到的条件的行。

语法

以下语法说明了 SQL Server 中的 WHERE 子句

此语法具有以下参数

Column_list: 它是我们想要从结果集中检索的列名。

Table_name: 这是将从中选择列的表名。

Search_condition: 这是一个条件,仅返回满足此条件的记录。它对表执行过滤。它还指示逻辑表达式或多个逻辑表达式的组合,这些表达式评估结果:TRUE、FALSEUNKNOWN。 如果它评估为 FALSE 或 UNKNOWN,WHERE 子句将不返回任何记录。

WHERE 子句还支持以下运算符来筛选记录

运算符名称运算符符号
Equal=
Less Than (小于号)<
Greater Than (大于号)>
小于或等于<=
大于或等于>=
不等于<>
搜索特定模式喜欢
查找给定范围内的记录BETWEEN
用于指定多个值IN

示例

让我们通过几个例子来了解 SQL Server 中 WHERE 子句的工作原理。我们将使用 employee_info 表来演示 WHERE 子句的所有示例。 employee_info 表具有以下数据

SQL Server WHERE Clause

示例 1: 此示例将使用简单的等式运算符来筛选行。以下语句将检索所有工作时间等于 12 的员工,然后根据他们的姓名进行排序

执行该语句将只返回工作时间等于 12 的员工

SQL Server WHERE Clause

示例 2: 此示例检索满足 WHERE 子句中两个条件的行。以下示例返回工作时间大于 10 且工资小于 50000 的员工信息。 这里我们使用逻辑运算符 AND 将 WHERE 子句中的两个条件组合起来。

执行该语句将返回所有工作时间大于 10 且工资小于 50000 的员工

SQL Server WHERE Clause

示例 3: 此示例检索满足 WHERE 子句中任意两个条件的行。以下示例返回职业为 writer 且工资大于 35000 的员工信息。 这里我们使用 OR 运算符来组合 WHERE 子句中的条件。

执行该语句将返回所有满足查询中包含的这些条件之一的员工。

SQL Server WHERE Clause

示例 4: 此示例将检索属于两个值范围内的行。以下语句查找工资在 35000 到 60000 之间的员工信息。 这里我们使用 BETWEEN 运算符来获得所需的结果。

执行该语句将返回所有工资在 35000 到 60000 范围内的员工。

SQL Server WHERE Clause

示例 5: 此示例检索列表中具有值的记录。以下语句将使用 IN 运算符来查找职业为 Writer、Manager 或 HR 的员工信息。

执行查询将返回所有职业为 Writer、Manager 或 HR 的员工信息

SQL Server WHERE Clause

示例 6: 此示例检索值包含字符串的记录。以下语句将使用 LIKE 运算符来查找职业包含 'er' 字符串的员工信息。

执行查询将返回所有职业包含 'er' 字符串的员工信息

SQL Server WHERE Clause

示例 7: 此示例检索值不满足条件的记录。以下语句将使用 NOT EQUAL 运算符来查找职业不包含 'Writer' 职业的员工信息。

执行查询将返回所有职业不包含 'Writer' 职业的员工信息

SQL Server WHERE Clause

本文将解释与 WHERE 子句相关的所有信息,例如 WHERE 子句的介绍、它在 SQL Server 中的需求,以及如何使用它基于单个或多个条件来筛选记录。


下一个主题SQL Server ORDER BY