当某些字段为NULL时,使用concat更新

时间:2016-06-07 16:56:31

标签: mysql sql-update ignore

我正在对表进行一个简单的更新,我将三个字段连接起来:

Update TableA concat(Field1,Field2,Field3)

问题是在某些记录中,一个或多个字段可以为NULL。这些记录最终没有更新字段。在以下情况下,我希望第一条记录的更新字段为BobJones

+--------+--------+---------+--------------+
| Field1 | Field2 | Field3  | Update       |
+--------+--------+---------+--------------+
| Bob    | NULL   | Jones   | NULL         |
+--------+--------+---------+--------------+
| Mary   | Ann    | Smith   | MaryAnnSmith |
+--------+--------+---------+--------------+
| Bill   |        | Clinton | BillClinton  |
+--------+--------+---------+--------------+

Update完全忽略了它。我试着以Update IGNORE的方式尝试,但也失败了。是的,我知道我可以做Case When Then事情,但它比我在这种情况下更复杂,并且希望有一些版本的“更新IGNORE”可以起作用。

3 个答案:

答案 0 :(得分:1)

在mysql中使用ifnull

concat(ifnull(Field1,''),ifnull(Field2,''),ifnull(Field3,''))

答案 1 :(得分:1)

使用时间更短:

CONCAT_WS('',字段1,字段2,字段3);

<强>示例

MariaDB []> SELECT CONCAT_WS('', 'Bob',NULL,'Jones',NULL), CONCAT_WS(' ', 'Bob',NULL,'Jones',NULL), CONCAT_WS('Bob',NULL,'Jones',NULL);
+----------------------------------------+-----------------------------------------+------------------------------------+
| CONCAT_WS('', 'Bob',NULL,'Jones',NULL) | CONCAT_WS(' ', 'Bob',NULL,'Jones',NULL) | CONCAT_WS('Bob',NULL,'Jones',NULL) |
+----------------------------------------+-----------------------------------------+------------------------------------+
| BobJones                               | Bob Jones                               | Jones                              |
+----------------------------------------+-----------------------------------------+------------------------------------+
1 row in set (0.00 sec)

MariaDB []>

答案 2 :(得分:0)

您可以为每个NULL值插入零长度字符串,并使用IFNULLCOALESCE

Update TableA concat(IFNULL(Field1,''),IFNULL(Field2,''),IFNULL(Field3,''))

Here is a functional example