与 NULL 合并

COALESCE with NULL(与 NULL 合并)
本文介绍了与 NULL 合并的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在一个视图中发现了这个 SQL 片段,但我对它的用途感到相当困惑(为简洁起见,实际 SQL 已缩短):

I found this snippet of SQL in a view and I am rather puzzled by it's purpose (actual SQL shortened for brevity):

SELECT
    COALESCE(b.Foo, NULL) AS Foo

FROM a
LEFT JOIN b ON b.aId=a.Id

我想不出与 null 合并的目的的单一原因,而不仅仅是这样做:

I cannot think of a single reason of the purpose of coalescing with null instead of just doing this:

SELECT
    b.Foo AS Foo

FROM a
LEFT JOIN b ON b.aId=a.Id

或者至少不要显式包含 NULL:

Or at the very least don't include the NULL explicitly:

SELECT
    COALESCE(b.Foo) AS Foo

FROM a
LEFT JOIN b ON b.aId=a.Id

我不知道这是谁创作的(所以我不能问),它是什么时候创作的,或者它是为哪个特定的 MS SQL Server 版本编写的(当然是 2008 年之前的版本).

I don't know who authored this (so I cannot ask), when it was authored, or for what specific MS SQL Server version it was written for (pre-2008 for sure though).

是否有任何正当理由与 NULL 合并而不是直接选择列? 我忍不住笑着把它写成菜鸟错误,但这让我想知道是否有一些我不知道的边缘案例".

Is there any valid reason to coalesce with NULL instead of just selecting the column directly? I can't help but laugh and write it off as a rookie mistake but it makes me wonder if there is some "fringe case" that I don't know about.

推荐答案

你说得对 - 没有理由使用:

You are right - there is no reason to use:

SELECT COALESCE(b.Foo, NULL)

...因为如果 b.foo 为 NULL,你不妨使用:

...because if b.foo is NULL, you might as well just use:

SELECT b.foo

...假设您知道该值是否为空.

...assuming that you want to know if the value is null.

这篇关于与 NULL 合并的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Execute complex raw SQL query in EF6(在EF6中执行复杂的原始SQL查询)
Hibernate reactive No Vert.x context active in aws rds(AWS RDS中的休眠反应性非Vert.x上下文处于活动状态)
Bulk insert with mysql2 and NodeJs throws 500(使用mysql2和NodeJS的大容量插入抛出500)
Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
auto_increment column for a group of rows?(一组行的AUTO_INCREMENT列?)
Sort by ID DESC(按ID代码排序)