我發現SQL的這個片段在視圖中,我頗爲不解通過它的目的(實際的SQL縮短爲簡潔起見):COALESCE用NULL
SELECT
COALESCE(b.Foo, NULL) AS Foo
FROM a
LEFT JOIN b ON b.aId=a.Id
我想不出的合併的目的,理由只有一個與空,而不是僅僅這樣做:
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合併,而不是直接選擇列?我忍不住笑,把它當作菜鳥的錯誤寫下來,但這讓我懷疑是否有一些我不知道的「邊緣情況」。
看起來像一個新人的錯誤給我。 – 2009-11-19 22:15:57
或者需求已經多次改變,所以這個查詢被不同的開發者多次修改。也許COALESCE(b.Foo,NULL)是COALESCE(b.Foo,[某值/表達式])之前。然後要求變了。所以有人沒有想到就變成了COALESCE(b.Foo,NULL)。 – David 2009-11-19 22:19:41
如果b.Foo爲NULL,這可能是觸發錯誤的方法。是否有效是另一個問題。 – Mike 2016-09-02 19:33:17