就x而言与y相比。
X
SELECT *
FROM a
INNER JOIN b ON
COALESCE(b.columntojoin, b.alternatecolumn) = a.columntojoin
ý
SELECT *
FROM a
INNER JOIN b ON
(case when b.columntojoin is null then b.alternatecolumn else b.columntojoin end) = a.columntojoin
答案 0 :(得分:5)
COALESCE
基本上是一个缺少CASE
的陈述。
两者都完全相同。
SQL Server中也有ISNULL
(在其他DBMS中有所不同),但这实际上是一个非标准功能,实际上更加局限于COALESCE
。
答案 1 :(得分:2)
在这种情况下,我会使用COALESCE
(提供比ISNULL
更多的级别),而不是CASE
贱人。
CASE
声明在这里看起来有点笨重,因为你只是在检查NULL
。