gpt4 book ai didi

sql - 为什么 SQL 中没有对 CASE WHEN NULL 的特殊处理?

转载 作者:行者123 更新时间:2023-12-02 08:51:44 25 4
gpt4 key购买 nike

在 SQL 中,不可能像这样将变量与 NULL 进行比较:

CASE x WHEN NULL THEN y ELSE z END

因为使用三值 SQL 逻辑,x = NULL 永远不会 返回 true。必须改为这样做:

CASE WHEN x IS NULL THEN y ELSE z END

当 x 是修改数据的过程的结果时,这是有问题的,例如:

CASE WHEN func(i) IS NULL THEN y
WHEN func(i) = 'a' THEN z
ELSE t
END

那么……func(i) 会被计算两次?为什么没有标准要求 CASE ... WHEN NULL 使用 IS NULL 运算符将求值表达式与 NULL 进行比较?

是否有允许这种构造的 DBMS?

最佳答案

这只是 NULL 是邪恶的众多原因之一。一种解决方法是选择一个神奇的值作为 NULL 的代理:

CASE COALESCE(func(i), 'nada') WHEN 'nada' THEN y WHEN 'a' THEN z ELSE t END

关于sql - 为什么 SQL 中没有对 CASE WHEN NULL 的特殊处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8063268/

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