tôi thấy đoạn này của SQL trong một cái nhìn và tôi khá bối rối bởi mục đích của nó (thực tế SQL rút ngắn cho ngắn gọn):liên hiệp với NULL
SELECT
COALESCE(b.Foo, NULL) AS Foo
FROM a
LEFT JOIN b ON b.aId=a.Id
Tôi không thể nghĩ ra một lý do duy nhất về mục đích của coalescing với null thay vì chỉ làm điều này:
SELECT
b.Foo AS Foo
FROM a
LEFT JOIN b ON b.aId=a.Id
Hoặc ít nhất không bao gồm NULL một cách rõ ràng:
SELECT
COALESCE(b.Foo) AS Foo
FROM a
LEFT JOIN b ON b.aId=a.Id
Tôi không biết ai là tác giả (vì vậy tôi không thể hỏi), khi nó được tác giả, hoặc cho phiên bản MS SQL Server cụ thể được viết cho (trước năm 2008 chắc chắn).
Có lý do hợp lệ nào để kết hợp với NULL thay vì chỉ chọn cột trực tiếp không? Tôi không thể không cười và viết nó như là một sai lầm tân binh nhưng nó làm cho tôi tự hỏi nếu có một số "trường hợp rìa" mà tôi không biết.
Có vẻ như một sai lầm tân binh đối với tôi. –
Hoặc yêu cầu đã thay đổi nhiều lần, vì vậy truy vấn này đã được các nhà phát triển khác nhau sửa đổi nhiều lần. Có thể COALESCE (b.Foo, NULL) là COALESCE (b.Foo, [một số giá trị/biểu thức]) trước đây. Sau đó, yêu cầu đã thay đổi. Vì vậy, ai đó chỉ cần thay đổi thành COALESCE (b.Foo, NULL) mà không cần suy nghĩ. – David
Điều này có thể là một cách hacky để kích hoạt một lỗi nếu b.Foo là NULL. Cho dù đó là hợp lệ hay không là một câu hỏi khác. – Mike