Col*_*ett 10 sql t-sql sql-server coalesce
我在一个视图中发现了这个SQL片段,我对它的目的感到困惑(为了简洁起见缩短了实际的SQL):
SELECT
COALESCE(b.Foo, NULL) AS Foo
FROM a
LEFT JOIN b ON b.aId=a.Id
Run Code Online (Sandbox Code Playgroud)
我想不出与null合并的目的的单一原因而不是仅仅这样做:
SELECT
b.Foo AS Foo
FROM a
LEFT JOIN b ON b.aId=a.Id
Run Code Online (Sandbox Code Playgroud)
或者至少不要明确地包含NULL:
SELECT
COALESCE(b.Foo) AS Foo
FROM a
LEFT JOIN b ON b.aId=a.Id
Run Code Online (Sandbox Code Playgroud)
我不知道是谁创作了这个(所以我不能问),是什么时候创作的,或者是为它编写的具体MS SQL Server版本(尽管如此,2008年之前).
有没有合理的理由与NULL合并而不是直接选择列? 我忍不住笑了,把它写成了一个新手的错误,但这让我想知道是否有一些我不知道的"边缘情况".
OMG*_*ies 11
你是对的 - 没有理由使用:
SELECT COALESCE(b.Foo, NULL)
Run Code Online (Sandbox Code Playgroud)
...因为如果b.foo是NULL,你可能只是使用:
SELECT b.foo
Run Code Online (Sandbox Code Playgroud)
...假设您想知道该值是否为null.
| 归档时间: |
|
| 查看次数: |
10500 次 |
| 最近记录: |