在 SQL 服务器中评估 "value1 IS NOT DISTINCT FROM value2" 的最佳方式

Best way to evaluate "value1 IS NOT DISTINCT FROM value2" in SQL Server

SQL 服务器是否有与 Ansi SQL 运算符等效的运算符:IS DISTINCT FROM / IS NOT DISTINCT FROM?

我知道我可以替换:

value1 is not distinct from value2

与:

(value1 = value2) or (value1 is null and value2 is null)

或:

coalesce(value1, -1) = coalesce(value2, -1)

但是这些选项会阻止引擎使用索引,SQL服务器是否有特定的运算符来检查此比较?

谢谢。

没有。

不幸的是,SQL 服务器没有实现 null 安全运算符,不像其他数据库,例如 Postgres(支持标准 IS DISTINCT FROM 运算符),或 MySQL(有一个名为 <=> 的扩展运算符)。

所以你基本上坚持以下结构:

(value1 = value2) or (value1 is null and value2 is null)