COALESCE或CASE更高效和/或标准

why*_*heq 3 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
Run Code Online (Sandbox Code Playgroud)

ÿ

    SELECT * 
    FROM   a 
           INNER JOIN b ON
           (case when b.columntojoin is null then b.alternatecolumn else b.columntojoin end) = a.columntojoin
Run Code Online (Sandbox Code Playgroud)

mat*_*mmo 5

COALESCE本质上是一个简短的CASE陈述.

两者都完全一样.

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