2013-04-17 3 views
7

У меня есть столбец 1 и столбец 2, и вы хотите объединить их в столбец 3 той же таблицы. Если столбец 2 равен нулю, тогда отобразите значение столбца 1, если столбец 1 имеет значение null, они отображают данные столбца 2. Если оба они равны нулю, тогда отобразите нуль. Я пробовал две вещи:Объедините два столбца в одной колонке

1) используя CONCAT SELECT CONCAT(Column1, Column2) AS Column3 FROM TEST_ATTRIBUTES.

Он просто объединяет столбцы только в том случае, если оба они не равны нулю. в противном случае он просто присваивает значение null.

2) используя (столбец 1 + столбец 2).

SELECT (Column1 + Column2) AS Column3 FROM TEST_ATTRIBUTES.

не показывает желаемый выход.

Я пишу этот код в java. Спасибо

+0

есть ли вероятность того, что оба столбца не равны нулю? –

ответ

16

COALESCE(), это не объединяет, но возвращает первое ненулевое значение из списка.

SELECT Column1, 
     Column2, 
     COALESCE(Column1, Column2) AS Column3 
FROM TEST_ATTRIBUTES 

, если есть вероятность того, что оба они являются нуль,

SELECT Column1, 
     Column2, 
     IF(Column1 IS NULL AND Column2 IS NULL, NULL, CONCAT(COALESCE(Column1,''), COALESCE(Column2,''))) AS Column3 
FROM TEST_ATTRIBUTES 
+0

Столбец 3 имеет значение null. Это не работает. – ArmMiner

+0

см. Обновленный ответ с включенной демонстрацией. –

+0

Я попытался в редакторе SQL, и он работает, но в моем java-коде ничего не делает. – ArmMiner