COALESCE或CASE更高效和/或标准

时间:2013-03-20 12:03:58

标签: sql standards sql-standards

就x而言与y相比。

  • x更符合sql标准吗? [道歉如果主观]
  • 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

2 个答案:

答案 0 :(得分:5)

COALESCE基本上是一个缺少CASE的陈述。

两者都完全相同。

SQL Server中也有ISNULL(在其他DBMS中有所不同),但这实际上是一个非标准功能,实际上更加局限于COALESCE

答案 1 :(得分:2)

在这种情况下,我会使用COALESCE(提供比ISNULL更多的级别),而不是CASE贱人。

CASE声明在这里看起来有点笨重,因为你只是在检查NULL