⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 cmd + k | ctrl + k
比较

比较运算符

下表显示了标准比较运算符。当任一输入参数为 NULL 时,比较结果为 NULL

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

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

运算符 描述 示例 结果
IS DISTINCT FROM 不等于,包括 NULL 2 IS DISTINCT FROM NULL
IS NOT DISTINCT FROM 等于,包括 NULL NULL IS NOT DISTINCT FROM NULL

组合类型转换

在不同类型之间进行比较时,DuckDB 会执行 组合类型转换。引入这些类型转换是为了让交互式查询更便捷,并且与多种编程语言执行的类型转换保持一致,但通常与 PostgreSQL 的行为不兼容。例如,以下表达式在 DuckDB 中求值并返回 true,但在 PostgreSQL 中会失败。

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

目前无法对 DuckDB 的比较运算符强制执行更严格的类型检查。如果您需要更严格的类型检查,我们建议您使用 结合 typeof 函数 或实现一个 用户定义函数

BETWEENIS [NOT] NULL

除了标准比较运算符之外,还有 BETWEENIS (NOT) NULL 运算符。它们的功能与运算符非常相似,但具有 SQL 标准规定的特殊语法。下表显示了这些运算符。

请注意,BETWEENNOT BETWEEN 仅在 axy 都属于相同类型的情况下才与以下示例等效,因为 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 如果 expression 为 NULL 则为 true,否则为 false
expression ISNULL IS NULL 的别名(非标准)
expression IS NOT NULL 如果 expression 为 NULL 则为 false,否则为 true
expression NOTNULL IS NOT NULL 的别名(非标准)

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