7 de septiembre de 2007

Traducir la función NVL2 de Oracle a Microsoft SQL Server

Artículo original: Translating Oracle’s NVL2 function to Microsoft SQL Server
http://www.foxpert.com/knowlbits_200703_2.htm
Autor: Christof Wollenhaupt
Traducido por: Ana María Bisbé York

En esta dirección de Technet, Microsoft expuso que la traducción adecuada para la función NVL2 de Oracle es:
NVL2 (Salary, Salary*2, 0)
Debería ser:
CASE SALARY
WHEN null THEN 0
ELSE SALARY*2
END
Ellos acertaron en la parte de Oracle, pero fallaron en la sintaxis de su propio servidor. La forma correcta de utilizar WHEN con valores NULL es:
CASE
WHEN SALARY IS NULL THEN 0
ELSE SALARY*2
END
En Microsoft SQL Server usted utiliza IS NULL o IS NOT NULL para verificar si existe NULL. La expresión original debería devolver siempre el valor desde a parte ELSE ya que la condición SALARY = NULL nunca será verdadera.

No hay comentarios. :

Publicar un comentario