2013-05-30 4 views

ответ

6

Используйте COALESCE function, которая возвращает первый ненулевой аргумент:

SELECT COALESCE(Column1, Column2), Column3, Column4 
FROM MyTable 

В этом случае вы получите Column1, но если это NULL, Column2 вместо него будет возвращено.

+0

+1 хороший альтернативный :) – Stephan

+0

@Stephan FWIW, документы говорят, как эквивалентны, так что я предполагаю, что это просто вопрос выбора семантического –

+1

да, но есть некоторые различия: 1. coalesce принимает более двух параметров 2. в ifnull вам нужно знать, какой столбец может быть нулевым, но в coalesce вам все равно, поскольку он получает первое ненулевое значение :) – Stephan

2

Вы можете использовать функцию IFNULL, попробуйте этот

SELECT IFNULL(Column1, Column2), Column3, Column4 FROM MyTable 
1

Использование COALESCE(column1,column2).

SELECT COALESCE(Column1, Column2), Column3, Column4 FROM MyTable 
2

От Safari Books

Имя

coalesce() — Return first non-NULL argument 

Обычное Использование

coalesce(param1, param2, ...) 

Описание

сливаются() функция принимает два или более параметров и повторно включает первый параметр, отличный от NULL. Если все значения параметра равны NULL, возвращается NULL.

также посмотреть

ifnull(), nullif() 
Смежные вопросы