2008-10-21 46 views

Respuesta

11

La función COALESCE() hace lo que usted describe. Es un SQL estándar y debe ser compatible con todas las bases de datos SQL.

La función IFNULL() no es SQL estándar. Solo algunas marcas de bases de datos admiten esta función.

3

Es posible que desee ver en IFNULL o COALESCE. Si recuerdo correctamente, IFNULL funciona para MySQL.

+0

IFNULL es el equivalente de MySQL. –

0

Quizás Saber qué función MS Access NZ() realmente hace sería útil (antes de responder con sugerencias completamente inválidas). La prueba de función NZ() para nulo y reemplaza el nulo con una cadena vacía, un cero u opcionalmente un valor que ingresa el usuario.

COALESCE ni siquiera se acerca, de hecho, devuelve un valor nulo si no hay ninguno nulo en una 'Lista ???'

IFNULL() Función es lo que estás buscando.

http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html

+2

La idea de COALESCE es que el último valor sea el valor no nulo predeterminado: COALESCE (MightBeNull, MightAlsoBeNull, CouldBeNull, 'DefaultValue') ... – diamondsea

+0

¡Aquí, aquí mismo! Y podría agregar, que nz() no requiere una lista en absoluto. Puede funcionar en un solo elemento para deshacerse de cualquier nulo en él, y devolver cero o "". Es una gran herramienta para tratar con nulos. Coalesce no hace lo mismo, y además de eso, si se usa con 2 parámetros es francamente prolijo y torpe. es decir, no puede fusionarse (x). Pero puedes nz (x). –

2

COALESCE hace precisamente lo que el PO está pidiendo, como lo hace IFNULL:

SELECT Nz(MightBeNullVar, 0) FROM ... (MS Access version) 
SELECT COALESCE(MightBeNullVar, 0) FROM ... (MySQL version) 
SELECT IFNULL(MightBeNullVar, 0) FROM ... (MySQL version) 

La diferencia es la COALESCE puede buscar a través de múltiples variables y devolver la primera no nulo uno:

cada uno de estos devolverá un 0 (cero) si ninguno de los valores tiene un valor establecido (son nulos).

El IFNULL es (bastante sin sentido) más rápido. Probablemente haya otras cosas mejores que optimizar en su consulta antes de molestarse con problemas de IFNULL vs COALESCE. Si tiene varias cosas para verificar, use COALESCE. Si solo tiene un valor único para verificar, use IFNULL.

Cuestiones relacionadas