2012-05-10 3 views
2

у меня есть проблема с функцией CONCAT туздMysql CONCAT() не работает должным образом

Mysql Quesry является

SELECT CONCAT(a_firstname,' ',a_lastname) as a_employeename FROM employee. 

Это дает нулевое значение, если какой-либо из поля нулевой

+--------------------------+ 
| a_firstname | a_lastname | 
---------------------------- 
| bh   | a   | 
| a   | NULL  | 
+--------------------------+ 

Результат

+----------------+ 
| a_employeename | 
------------------ 
| bh    | 
| NULL   | 
+----------------+ 

ответ

4

MySQL обрабатывает не NULL «нет данных», так что все может быть клуб с NULL становится NULL. Чтобы избежать этого, вы должны ввести IFNULL (поле, результат).

Смотреть следующий запрос:

SELECT CONCAT(IFNULL(a_firstname,''),' ',IFNULL(a_lastname,'')) as a_employeename FROM employee

Спасибо.

4

Let начинаем с урока в смирении: CONCAT работает нормально, но вы не используете его правильно. Пожалуйста, не спешите с такими выводами.

Проблема здесь состоит в том, что вы должны использовать COALESCE при конкатенации NULL значения:

SELECT CONCAT(COALESCE(a_firstname, ''),' ', COALESCE(a_lastname, '')) 

Это происходит потому, что любая операция, которая включает в себя NULL (например, конкатенация NULL со строкой) также приводит к NULL. См. problems with NULL values.

+0

Спасибо, что сейчас работает –

1

Когда вы делаете CONCAT и одно из полей NULL, результат всегда равен NULL.

0

Если вы хотите объединить поля NULL и NOT NULL, CONCAT_WS() - лучшее решение. Пример: CONCAT_WS (',', FIELD1, FIELD2, FIELD3) вернет 'FIELD1Value, FIELD2Value, FIELD3Value'. Если значение FIELD2Value равно NULL, вывод будет «FIELD1Value, FIELD3Value».

0

просто использовать функцию IFNULL

попробуйте этот код

SELECT CONCAT(IFNULL(a_firstname,''),' ',IFNULL(a_lastname,'')) as a_employeename FROM employee. 
Смежные вопросы