2016-06-07 97 views
1

我做一个表上的简单更新,由此我Concat的三个字段CONCAT:更新与当某些字段是NULL

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'的版本,而不是工作。

回答

0

您可以将每个NULL值零长度字符串,抓到IFNULLCOALESCE

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

Here is a functional example

+0

实例帮助了很多感谢你,原来NVL不灵了,在IFNULL伟大的工作。 – user3649739

1

在MySQL中使用IFNULL

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

这是较短的使用方法:

CONCAT_WS('',Field1,Fi eld2,字段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 []> 
相关问题