1

我用谷歌搜索了很多,但没有为我的问题找到可以理解的答案。有趣的是 4 我什么时候必须在查询中使用 COALESCE 函数。预先感谢您的回答。

4

1 回答 1

0

当您想要“列”的第一个非 NULL 值时(这种意义上的列意味着在您的查询输出中,而不是在您的表中)。

一个例子可能是公司的联系人。假设您有三列:

CompanyRep
CompanySecretary
CompanyOwner

你想存储所有三个。但是,在让您知道应该联系谁的查询中,您希望按照给定的顺序交付其中一个。但它们中的任何一个或全部可能为 NULL。

查询:

select coalesce (CompanyRep, CompanySecretary, CompanyOwner, '???') as contact
from blah blah blah

会给你你想要的价值。它会给你它找到的第一个不是 NULL 的值。如果所有可能的表列都是 NULL,你会得到'???',因为这显然不是NULL。


另一个例子,假设你有一个会计数据库,它有单独的借方和贷方值列 - 别介意这通常是一个糟糕的设计,你应该有一个带有符号的列 - 假设它是由会计较少的人设置的知识比我:-)

所以,如果你想总结所有交易以确保贷方和借方相等,你可以使用类似的东西:

select sum (coalesce (credit, -debit, 0)) from txns ...

这样,如果它不为NULL,它将选择贷方值,否则它将选择借方值的否定(所有值都是正数)。如果它们都是 NULL,它会给你零。

我听到你问,当它们都是非 NULL时会发生什么。好吧,这就是为什么它是一个糟糕的设计:-)

于 2011-10-17T08:06:51.177 回答