更新时间:2026-10-28 GMT+08:00
分享

比较操作符

在数据仓库的日常使用中,用户经常需要从海量数据中筛选出满足特定条件的记录。例如,在员工表中查找薪资高于5000元的员工、在订单表中筛选金额不等于0的有效订单、在产品表中查询库存量小于安全阈值的商品等。这些场景都离不开比较操作符的使用。

比较操作符是SQL查询中最基础也是最常用的条件判断工具,广泛应用于以下典型场景:

  • 数据筛选:在SELECT语句的WHERE子句中,使用比较操作符筛选满足条件的记录,如SELECT * FROM employees WHERE salary > 5000。
  • 多条件组合:在WHERE子句中结合AND、OR等逻辑操作符,使用多个比较操作符构建复合筛选条件。
  • 数据更新与删除:在UPDATE和DELETE语句中通过比较操作符精确定位需要操作的行。
  • 连接条件:在JOIN语句的ON子句中使用比较操作符指定表间关联条件。
  • 子查询判断:在子查询中使用比较操作符进行存在性判断或值比较。

了解比较操作符的使用方法、数据类型转换规则以及NULL值的特殊处理方式,有助于编写高效、准确的SQL查询语句。

比较操作符原理描述

比较操作符用于对两个表达式进行比较,并返回布尔类型(TRUE、FALSE或NULL)的结果。所有比较操作符都是双目操作符,即需要两个操作数参与运算。

被比较的两个数据类型必须是相同的数据类型,或者是可以进行隐式转换的类型。例如,1 < 2 < 3这样的表达式为非法的,因为1 < 2的结果是布尔值,布尔值和3之间不能做比较。

DWS提供的比较操作符请参见表1。

表1 比较操作符

操作符

描述

语法示例

<

小于

查询薪资低于5000的员工:

SELECT * FROM employees WHERE salary < 5000;

>

大于

查询薪资高于5000的员工:

SELECT * FROM employees WHERE salary > 5000;

<=

小于或等于

查询薪资不超过5000的员工:

SELECT * FROM employees WHERE salary <= 5000;

>=

大于或等于

查询薪资不低于5000的员工:

SELECT * FROM employees WHERE salary >= 5000;

=

等于

查询部门编号为10的员工:

SELECT * FROM employees WHERE department_id = 10;

<> 或 !=

不等于

查询部门编号不为10的员工:

SELECT * FROM employees WHERE department_id <> 10;

SELECT * FROM employees WHERE department_id != 10;

NULL值比较行为

在SQL标准中,NULL表示“未知值”,与任何值(包括NULL自身)进行比较的结果均为NULL(即unknown),而不是TRUE或FALSE。

  • NULL = 1 的结果为 NULL,而不是 FALSE。
  • NULL = NULL 的结果也为 NULL,而不是 TRUE。
  • NULL <> 1 的结果同样为 NULL。

在WHERE子句中,只有比较结果为TRUE的行才会被返回。结果为NULL或FALSE的行均不会被返回。因此,不能使用=或<>操作符来判断一个值是否为NULL,必须使用IS NULL或IS NOT NULL操作符。

相关文档