COALESCE o CASE más eficiente y / o estándar

En términos de x en comparación con y.

  • ¿Cumple x con los estándares sql mejor? [disculpas si es subjetivo]
  • ¿Es x más eficiente que y?
  • ¿O estos guiones son completamente diferentes y se pueden usar en diferentes contexts?

X

SELECT * FROM a INNER JOIN b ON COALESCE(b.columntojoin, b.alternatecolumn) = a.columntojoin 

y

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

COALESCE es esencialmente una statement CASE .

Ambos son exactamente lo mismo.

También hay ISNULL en SQL Server (se diferencia en otros DBMS), pero eso es en realidad una característica no estándar y en realidad es más limitado que COALESCE .

En este caso, usaría COALESCE (que proporciona más niveles que ISNULL ) en lugar de CASE stement.

La instrucción CASE parece un poco voluminosa aquí, ya que solo estás buscando NULL todos modos.