2012-05-10 6 views
2

私はCONCATのMySQLの機能に問題があることをMySQLのCONCAT()正常に動作していない

MysqlのQuesryは、フィールドのいずれかがnullの場合、これはnullになります

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(field、result)を指定する必要があります。

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

ありがとう:

は、次のクエリを参照してください。

4

CONCATが正しく動作しますが、あなたはが正しく使用されていません。結論に熱心にジャンプしないでください。

問題ここでは、NULL値を連結するときにCOALESCEを使用しなければならないということです。

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

(文字列でNULLを連結など)NULLを必要とする任意の動作もNULLにつながるからです。 problems with NULL valuesを参照してください。

+0

ありがとうございました –

1

CONCATを作成し、フィールドの1つが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. 
関連する問題