2010-07-09 22 views
34

tengo una instrucción de selección donde quiero hacer de selección condicional como estoMySQL IFNULL ELSE

IFNULL(field_a,field_a,feild_b) 

para que compruebe campo a si a es nulo, entonces el selecto habría campo B

es que posible ?

Respuesta

68

Uso COALESCE:

SELECT COALESCE(field_a, field_b) 

COALESCE es una función estándar ANSI que devuelve el primer valor no nulo de la lista de columnas especificadas, el procesamiento de las columnas de izquierda a derecha. Por lo tanto, en el ejemplo, si field_a es nulo, se mostrará el valor field_b. Sin embargo, esta función devolverá NULL si no hay ningún valor no nulo de las columnas especificadas.

Se admite en MySQL (Lo he utilizado en 4.1), SQL Server (ya v2000), Oracle 9i + ...

+3

que apoyan el uso de COALESCE también. –

+0

Una explicación tan clara de cómo funciona la función ... ¡Gracias! Actualizado el enlace roto. – Andrew

34

Sí, pero es sólo dos parámetros:

IFNULL(field_a,field_b) 

Si field_a no es nulo, se devolverá. De lo contrario, se devolverá field_b.

Referencia: IFNULL

28

y otra forma a la piel ese gato (flexible para no sólo las comparaciones nulos) ...

select if(field_a is not null, field_a, field_b) from... 
+1

La mejor respuesta. Permitir hacer 'Seleccione if (name is not null, CONCAT ('name is:', name), '');' – Apolo

+0

'select IFNULL (column, 'default')' también funciona. Vea aquí: http://sqlfiddle.com/#!9/14b752/1/0 – Arda