↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本。 PostgreSQL 8.1 已结束支持。 请参阅 当前版本手册.

9.2. 比较操作符 #

常见的比较操作符都可用,如表 9.1所示。

表 9.1. 比较操作符

Operator描述
< 小于
> 大于
<= 小于或等于
>= 大于或等于
= 等于
<> or != not equal

注意

!= 操作符在解析器阶段会转换为 <>。不可能实现行为不同的 != 和 <> 操作符。

比较操作符适用于所有相关的数据类型。所有比较操作符都是返回 boolean 类型值的二元操作符;类似 1 < 2 < 3 的表达式是无效的(因为没有用于比较布尔值和 3 的 < 操作符)。

除比较操作符之外,还可以使用特殊的BETWEEN结构:

a BETWEEN x AND y

等价于

a >= x AND a <= y

类似地,

a NOT BETWEEN x AND y

等价于

a < x OR a > y

除了把第一种形式在内部改写成第二种形式所需的CPU周期之外,两种形式之间没有任何区别。BETWEEN SYMMETRIC与BETWEEN相同,只是不要求AND左侧的参数小于或等于右侧的参数;正确的范围会自动确定。

要检查一个值是否为 null,使用下面的结构:

expression IS NULL
expression IS NOT NULL

或者等效但非标准的结构:

expression ISNULL
expression NOTNULL

不要写expression = NULL,因为NULL并不“等于”NULL。(null 值表示未知值,而我们并不知道两个未知值是否相等。)这一行为符合 SQL 标准。

提示

有些应用可能期望表达式expression = NULL在expression求值为 null 时返回真。我们强烈建议此类应用修改为遵循 SQL 标准。但是,如果无法这样修改,那么可以使用配置变量transform_null_equals。如果将其打开,PostgreSQL会把x = NULL子句转换成x IS NULL。这是PostgreSQL 6.5 到 7.1 版本中的默认行为。

当任一输入为 null 时,普通的比较操作符会得到 null(表示“未知”)。进行比较的另一种方式是使用IS DISTINCT FROM结构:

expression IS DISTINCT FROM expression

对于非 null 输入,它与<>操作符一样。不过,如果两个输入都为 null,它会返回假。而如果只有一个输入为 null,它会返回真。因此,它实际上把 null 当作一种普通数据值,而不是“未知”。

布尔值也可以使用下列结构进行测试:

expression IS TRUE
expression IS NOT TRUE
expression IS FALSE
expression IS NOT FALSE
expression IS UNKNOWN
expression IS NOT UNKNOWN

这些谓词总是返回真或假,从不返回空值,即使操作数为 null 也是如此。null 输入被当作逻辑值“未知”。请注意,IS UNKNOWN和IS NOT UNKNOWN实际上分别等同于IS NULL和IS NOT NULL,只是输入表达式必须是布尔类型。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.