gpt4 book ai didi

sql - 如何在SQL Server 20008R2中重写IS DISTINCT FROM和IS NOT DISTINCT FROM?

转载 作者:行者123 更新时间:2023-12-01 17:57:18 28 4
gpt4 key购买 nike

如何在不支持 SQL Server 2008R2 的 SQL 实现中重写包含标准 IS DISTINCT FROMIS NOT DISTINCT FROM 运算符的表达式?

最佳答案

IS DISTINCT FROM 谓词是作为 SQL:1999 的功能 T151 引入的,其可读否定 IS NOT DISTINCT FROM 是作为 SQL 的功能 T152 添加的: 2003年。这些谓词的目的是保证比较两个值的结果是 TrueFalse,而不是 Unknown

这些谓词适用于任何可比较的类型(包括行、数组和多重集),使得精确模拟它们变得相当复杂。然而,SQL Server 不支持大多数类型,因此我们可以通过检查空参数/操作数来取得很大的进展:

  • a 与 b 不同 可以重写为:

    ((a <> b OR a IS NULL OR b IS NULL) AND NOT (a IS NULL AND b IS NULL))
  • a 与 b 不同 可以重写为:

    (NOT (a <> b OR a IS NULL OR b IS NULL) OR (a IS NULL AND b IS NULL))
<小时/>

您自己的答案不正确,因为它没有考虑到 FALSE OR NULL 的计算结果为未知。例如,NULL IS DISTINCT FROM NULL 的计算结果应为False。同样,1 IS NOT DISTINCT FROM NULL 的计算结果应为False。在这两种情况下,您的表达式都会产生未知

关于sql - 如何在SQL Server 20008R2中重写IS DISTINCT FROM和IS NOT DISTINCT FROM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10416789/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com