是否有一种简洁的方法可以对 SQL 查询的所有列执行相同的合并?

Is there a succinct way of performing an identical coalesce on all columns of an SQL query?

假设我有一个问题:

SELECT FirstName, LastName, Sex, Age FROM Human

如果由于任何原因在 table 中有一个空值,我们可以:

coalesce(FirstName, 'Unknown')

对于具有更多列的较大查询,有没有办法合并每个单独的列,而不是重复 coalesce 操作的数量,而不是单独合并每个列?

像这样:

SELECT coalesce(FirstName, LastName, Sex, Age, 'Unknown') FROM Human

(我知道那是错误的,不会起作用,这是我试图说明我的意图的示例的一部分)。

理想情况下,上面的代码会依次检查每一列并将任何空值替换为 'Unknown'。有没有比这个更简单的方法:

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?例如仅适用于 FirstNameLastNameSex,不适用于其余的。

不,你不能那样做。 COALESCE"is a syntactic shortcut for the CASE expression."

你应该问自己的问题是,

  1. 为什么我一开始就有这些 NULL 值?
  2. 为什么我要在我的 TSQL 中处理我的数据表示? TSQL 是使用基于集合的操作检索关系数据的绝佳工具。 TSQL 是使数据看起来不错的糟糕工具。
  3. 'Unknown' 代替 NULL 会给我带来什么,除了性能不足和未来的头痛之外?