Я нашел этот фрагмент 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 вместо простого выбора столбца? Я не могу не смеяться и записывать это как ошибку новобранец, но это заставляет задуматься, есть ли какие-то «бахромы», о которых я не знаю.
Похоже на ошибку новобранец. –
Или требование несколько раз менялось, поэтому этот запрос несколько раз менялся разными разработчиками. Возможно, COALESCE (b.Foo, NULL) раньше был COALESCE (b.Foo, [some value/expression]). Затем требование изменилось. Так что кто-то просто изменился на COALESCE (b.Foo, NULL), не задумываясь. – David
Возможно, это был хакерский способ вызвать ошибку, если b.Foo был NULL. Является ли это действительным или нет, это другой вопрос. – Mike