我有一个联系人表:
id first_name last_name full_name
1 John Doe -null-
2 -null- -null- Mike Willson
3 Dany Jean -null-
4 Peter -null- -null-
如何合并first_name和last_name列以填充full_name为NULLfull_name列?
我想得到这样的结果:
id first_name last_name full_name
1 John Doe John Doe
2 -null- -null- Mike Willson
3 Dany Jean Dany Jean
4 Peter -null- Peter
UPDATE your_table
SET full_name = CONCAT_WS(' ', first_name, last_name)
WHERE full_name IS NULL
AND COALESCE(first_name, last_name) IS NOT NULL
如果full_name
为 NULL,并且first_name
或last_name
不为 NULL,则将更新该。
请注意,CONCAT_WS()
将忽略 NULL 参数。因此,如果first_name
或last_name
为 NULL,则只会获得没有' '
空格的其他值。
查看有关 db-fiddle.com 的演示
一种选择是同时使用CONCAT()
、COALESCE()
和TRIM()
函数:
UPDATE contacts_table
SET full_name = TRIM(CONCAT( COALESCE(first_name,''), ' ', COALESCE(last_name,'') ))
没有WHERE
条件。
演示
我这样做 - 它很好:
UPDATE `conacts_table`
SET `full_name` = CONCAT(IFNULL(first_name, ''), ' ', IFNULL(last_name, ''))
WHERE `full_name` IS NULL
只是想知道这是否是最佳方法?