post icon

La cláusula COALESCE [ANSI SQL] vs ISNULL [TSQL]

Éstas dos cláusulas hacen prácticamente lo mismo, por eso generan mucha confusión sobre como usar y cuando usarlo aunque sean realmente sencillas de comprender e implementar además de ser más que útiles.

Básicamente ambas validan un valor o más si es o no NULL y lo reemplazan por otro pero tienen sutiles diferencias.

  • Lectura: a la vista rápida del programador es más fácil comprender que hace ISNULL que COALESCE.
  • Estándar: COALESCE es un estándar del ANSI SQL lo que hace que todos los motores que sigan éste estándar lo implementen y no se tengan mayores problemas a la hora de migrar de motor. En cambio ISNULL sólo se encuentra en TSQL.
  • Simplicidad: si bien ambas son simples, COALESCE lleva los puntos a la hora de evaluar más de un parámetro NULL, si se tiene una lista larga de evaluación COALESCE sólo lo tiene que separar entre comas y se tomará el primer valor NOT NULL que encuentre
    SELECT COALESCE(expresion1, expresion2, .. expresionN)

    siendo semejante a una evalución CASE como la que sigue:

    CASE
       WHEN (expresion1 IS NOT NULL) THEN expresion1
       WHEN (expresion2 IS NOT NULL) THEN expresion2
       ...
       ELSE expresionN
    END
    

    En cambio para lograr ésto con ISNULL tendríamos que escribir ésto que es más engorroso:

    SELECT ISNULL(expresion1, ISNULL(expresion2, .. ISNULL(expresionN))
  • Perfomance: Si bien es cierto que ambos son rápidos, ISNULL está optimizado para utilizarse en  TSQL. Existen muchas pruebas hechas que demuestran esto, donde se tienen alrededor de un 25% de mayor velocidad de ejecución.

Comentarios desde Facebook:

Sin Comentarios aun, puedes tú ser el primero en comentar!

Deja tu Comentario

Responder