[英]MySQL update/concatenate column if NULL, using data from other columns
我有一個聯系人表:
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為NULL的 full_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,則將更新full_name
。
請注意, CONCAT_WS()
將忽略NULL參數。 因此,如果first_name
或last_name
為NULL,您將只獲得另一個值,而沒有' '
空格。
參見db-fiddle.com上的演示
我正在這樣做-很好:
UPDATE `conacts_table`
SET `full_name` = CONCAT(IFNULL(first_name, ''), ' ', IFNULL(last_name, ''))
WHERE `full_name` IS NULL
只是想知道這是否是最佳方法嗎?
一種選擇是一起使用CONCAT()
, COALESCE()
和TRIM()
函數:
UPDATE contacts_table
SET full_name = TRIM(CONCAT( COALESCE(first_name,''), ' ', COALESCE(last_name,'') ))
沒有WHERE
條件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.