一尘不染

带有空值的COALESCE

sql

我在视图中找到了以下SQL代码段,但我对它的目的感到困惑(为简化起见,实际的SQL简称为“ SQL”):

SELECT
    COALESCE(b.Foo, NULL) AS Foo

FROM a
LEFT JOIN b ON b.aId=a.Id

我无法想到使用null合并的目的的单一原因,而不仅仅是这样做:

SELECT
    b.Foo AS Foo

FROM a
LEFT JOIN b ON b.aId=a.Id

或至少不要明确包含NULL:

SELECT
    COALESCE(b.Foo) AS Foo

FROM a
LEFT JOIN b ON b.aId=a.Id

我不知道是谁创作的(所以我不敢问),创作的时间,或者它是针对哪个特定的MS SQL Server版本编写的(当然可以在2008年之前)。

是否有任何正当理由与NULL合并,而不仅仅是直接选择该列?
我忍不住笑着把它当作菜鸟的错误而写下来,但这让我想知道是否存在一些我不知道的“附带条件”。


阅读 156

收藏
2021-05-16

共1个答案

一尘不染

您是对的-没有理由使用:

SELECT COALESCE(b.Foo, NULL)

…因为如果b.foo为NULL,则最好使用:

SELECT b.foo

…假设您 知道该值是否为null。

2021-05-16