⌘+k ctrl+k
1.4 (LTS)
搜索快捷键 cmd + k | ctrl + k
比较

比较运算符

下表显示了标准比较运算符。每当输入参数中包含 NULL 时,比较结果均为 NULL

运算符 描述 示例 结果
< 小于 2 < 3 true
> 大于 2 > 3 false
<= 小于或等于 2 <= 3 true
>= 大于或等于 4 >= NULL NULL
=== 等于 NULL = NULL NULL
<>!= 不等于 2 <> 2 false

下表显示了标准的区别(distinction)运算符。这些运算符将 NULL 值视为相等。

运算符 描述 示例 结果
IS DISTINCT FROM 不等于(包含 NULL 的判断) 2 IS DISTINCT FROM NULL true
IS NOT DISTINCT FROM 等于(包含 NULL 的判断) NULL IS NOT DISTINCT FROM NULL true

组合类型转换 (Combination Casting)

当对不同类型进行比较时,DuckDB 会执行 组合类型转换。引入这些转换是为了使交互式查询更加方便,并且与多种编程语言执行的转换一致,但通常与 PostgreSQL 的行为不兼容。例如,以下表达式在 DuckDB 中可以求值并返回 true,但在 PostgreSQL 中会报错。

SELECT 1 = true;
SELECT 1 = '1.1';

目前无法为 DuckDB 的比较运算符强制执行更严格的类型检查。如果您需要更严格的类型检查,请考虑使用 typeof 函数创建一个 宏 (macro),或实现一个 用户自定义函数

BETWEENIS [NOT] NULL

除了标准的比较运算符外,还有 BETWEENIS (NOT) NULL 运算符。它们的行为很像运算符,但具有 SQL 标准所规定的特殊语法。它们如下表所示。

请注意,仅当 axy 类型相同时,BETWEENNOT BETWEEN 才等同于下表中的示例,因为 BETWEEN 会将其所有输入转换为同一类型。

谓词 描述
a BETWEEN x AND y 等同于 x <= a AND a <= y
a NOT BETWEEN x AND y 等同于 x > a OR a > y
expression IS NULL 如果表达式为 NULL 则返回 true,否则返回 false
expression ISNULL IS NULL 的别名(非标准)
expression IS NOT NULL 如果表达式为 NULL 则返回 false,否则返回 true
expression NOTNULL IS NOT NULL 的别名(非标准)

对于表达式 BETWEEN x AND yx 用作下界,y 用作上界。因此,如果 x > y,结果将始终为 false

© 2025 DuckDB 基金会,阿姆斯特丹,荷兰
行为准则 商标使用指南