Estoy leyendo la documentación de los exámenes de SQL Server 2012 y vi el siguiente punto:
caso versus nulo versus fusión
Ahora, sé CÓMO usar cada uno, pero no sé CUÁNDO usar cada uno. ¿Podría algún cuerpo aclarar? Gracias.
PD. ¿Podríamos tener una etiqueta para las preguntas del examen?
sql-server
sql-server-2012
Stuart Blackler
fuente
fuente
COALESCE
se expande a,CASE
pero obviamente en unaCASE
declaración usted mismo puede ser más flexible en lasWHEN
condiciones. ParaISNULL
vsCOALESCE
relacionado / duplicado?Respuestas:
ISNULL : disponible solo en SQL Server. Permite la prueba y el reemplazo de un valor NULL por otro.
COALESCE - estándar ANSI. Permite la prueba y la sustitución de un valor NULL con el primer valor no nulo en un conjunto de argumentos de longitud variable. Es importante tener en cuenta que los factores de precedencia del tipo de datos en este
En el ejemplo anterior, 'a' es el primer valor no nulo, pero los datos de caracteres tienen una precedencia menor que el entero.
Otra consideración entre ISNULL vs COALESCE es que se determina que ISNULL es NOT NULL mientras que el resultado de una llamada COALESCE es NULLable. Vea la publicación de JRJ ISNULL () <> COALESCE () Si bien eso puede parecer algo trivial, el optimizador de consultas puede hacer diferentes planes en función de la nulabilidad de una columna.
Puede probar fácilmente la nulabilidad de sus expresiones isnull / coalesce / case ejecutándola a través de dmo sys.dm_exec_describe_first_result_set
CASO : también una función escalar estándar ANSI. Consideraría el uso de CASE sobre los dos anteriores cuando tengo una prueba que no se puede expresar en un escalar simple, pero esa es una respuesta bastante débil, lo admito.
fuente
COALESCE
. Gracias de nuevoCASE
es técnicamente una expresión, no una función.ISNULL le ofrece la posibilidad de devolver 1 repalcement, COALESCE no se limita a un Valor, por ejemplo,
COALESCE(v1,v2,v3,v4,v5)
si V5 es el único Valor que NO ES NULL, se devolveráfuente