4

CONCAT mysql 関数に問題があります

Mysqlクエリは

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

フィールドのいずれかがnullの場合、これはnullを返します

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

結果

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

5 に答える 5

7

MySQL は NULL を「データなし」として扱います。したがって、これを回避するには、IFNULL(field,result) を配置する必要があります。

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

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

ありがとう。

于 2013-01-11T10:36:29.300 に答える
6

謙虚さのレッスンから始めましょう。適切に機能していますCONCAT 、正しく使用していません。そんなに熱心に結論を急がないでください。

ここでの問題は、値COALESCEを連結するときに使用する必要があることです。NULL

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

これは、関連する操作NULL(文字列との連結などNULL) も結果になるためNULLです。NULL 値の問題を参照してください。

于 2012-05-10T10:10:30.113 に答える
1

IFNULL関数を使うだけ

このコードを試してください

SELECT CONCAT(IFNULL(a_firstname,''),' ',IFNULL(a_lastname,'')) as a_employeename FROM employee.
于 2012-05-10T11:27:39.333 に答える
0

NULLフィールドとNOTNULLフィールドの両方を連結する場合は、CONCAT_WS()が最適なソリューションです。例:CONCAT_WS('、'、FIELD1、FIELD2、FIELD3)は、'FIELD1Value、FIELD2Value、FIELD3Value'を返します。FIELD2ValueがNULLの場合、出力は「FIELD1Value、FIELD3Value」になります。

于 2012-05-10T10:53:30.487 に答える
0

CONCAT を作成し、フィールドの 1 つが NULL の場合、結果は常に NULL になります。

于 2012-05-10T10:10:36.200 に答える