Ho trovato questo frammento di SQL in una vista e sono piuttosto perplesso per il suo scopo (SQL effettivo abbreviato per brevità):COALESCE con NULL
SELECT
COALESCE(b.Foo, NULL) AS Foo
FROM a
LEFT JOIN b ON b.aId=a.Id
non riesco a pensare a una sola ragione dello scopo della coalescenza con null invece di fare questo:
SELECT
b.Foo AS Foo
FROM a
LEFT JOIN b ON b.aId=a.Id
O per lo meno non includono il NULL esplicitamente:
SELECT
COALESCE(b.Foo) AS Foo
FROM a
LEFT JOIN b ON b.aId=a.Id
Non so chi sia stato autore di questo (quindi non posso chiederlo), quando è stato creato, o per quale versione specifica di MS SQL Server è stata scritta (pre-2008 di sicuro però).
C'è qualche motivo valido per fondersi con NULL invece di selezionare direttamente la colonna? Non posso fare a meno di ridere e scriverlo come un errore da principiante, ma mi chiedo se ci sia qualche "caso marginale" che non conosco.
Sembra un errore da principiante per me. –
Oppure il requisito è stato modificato più volte, quindi questa query è stata modificata più volte da diversi sviluppatori. Forse COALESCE (b.Foo, NULL) era COALESCE (b.Foo, [qualche valore/espressione]) prima. Quindi il requisito è cambiato. Quindi qualcuno ha appena cambiato in COALESCE (b.Foo, NULL) senza pensare. – David
Questo potrebbe essere un modo hacky per attivare un errore se b.Foo era NULL. Se sia valido o meno è un'altra domanda. – Mike