在 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)
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)