5

就 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
4

2 回答 2

7

COALESCE本质上是一个简写的CASE语句。

两者完全相同

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

于 2013-03-20T12:05:56.510 回答
2

在这种情况下,我将使用COALESCE( 它提供的级别比ISNULL) 而不是CASE词干。

CASE语句在这里似乎有点笨重,因为NULL无论如何您只检查 s 。

于 2013-03-20T12:06:53.113 回答