说我有一个查询:
SELECT FirstName, LastName, Sex, Age FROM Human
如果出于任何原因在表中存在一个空值,我们可以:
coalesce(FirstName, 'Unknown')
对于具有更多列的较大查询,不是将每个列单独合并,而是可以将每个单独列合并,但又不重复coalesce
个操作的数量?
类似这样的东西:
SELECT coalesce(FirstName, LastName, Sex, Age, 'Unknown') FROM Human
(我知道这是错误的并且不会起作用,这是我的示例中试图说明我的意图的一部分。)
理想情况下,以上代码将依次检查每列,并将所有空值替换为“未知”。有没有比这更简单的方法:
SELECT coalesce(FirstName,'Unknown'), coalesce(LastName,'Unknown'), coalesce(Sex, 'Unspecified'), coalesce(Age,'0') FROM Human
此外,回到此示例:
SELECT coalesce(FirstName, LastName, Sex, Age, 'Unknown') FROM Human
除了n列数量之外,是否有一种方法像上面一样应用拱形coalesce
?例如,仅适用于FirstName
,LastName
和Sex
,其余不适用。
答案 0 :(得分:2)
不,您不能那样做。 COALESCE“是CASE
表达式的语法快捷方式。”
您应该问自己的问题,
NULL
值?NULL
代替'Unknown'
会给我带来什么,除了表现上的缺陷和日后的麻烦之外?