簡體   English   中英

MySQL更新/連接列(如果為NULL),則使用其他列中的數據

[英]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_namelast_name列以填充full_nameNULL的 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_namelast_name不為NULL,則將更新full_name

請注意, CONCAT_WS()將忽略NULL參數。 因此,如果first_namelast_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM