2015-04-20 47 views
0

我有一個名字爲firstname,middlename,lastname的表。我想將這3列數據作爲全名加入,就好像middlename!=''那麼fullname = firstname middlename,如果lastname!=''那麼fullname = firstname middlename lastname。 我嘗試如下,但沒有行受到影響。如何將3列的數據合併爲一個使用mysql的case語句

UPDATE studentprofiles SET fullname = CASE middlename WHEN middlename != '' THEN firstname + ' ' + middlename ELSE firstname END WHERE fullname = '' 

如何做到這一點?我必須更新多行。歡迎任何幫助/建議。

回答

1

的問題如下解決:

UPDATE studentprofiles 
    SET fullname = CASE 
       WHEN middlename != '' AND lastname != '' THEN concat(firstname,' ',middlename,' ',lastname) 
       WHEN middlename != '' AND lastname = '' THEN concat(firstname,' ',middlename) 
       WHEN middlename = '' AND lastname != '' THEN concat(firstname,' ',lastname) 
       ELSE concat(firstname) 
END 
0

爲什麼你不能簡單地串聯列數據,如

UPDATE studentprofiles 
SET fullname = concat(firstname, middlename, lastname); 

編輯:在這種情況下,你可以使用IFNULL()功能像

UPDATE studentprofiles 
SET fullname = IFNULL(firstname,'') + 
       IFNULL(middlename, '') + 
       IFNULL(lastname, ''); 
+0

但我要爲您在中間名和姓氏空值。如果爲空,則不會以全名添加該值。這就是爲什麼我需要案件。 –

0

嘗試使用此:

CASE case_value 
    WHEN when_value THEN statement_list 
    [WHEN when_value THEN statement_list] ... 
    [ELSE statement_list] 
END CASE 

檢查此鏈接瞭解更多信息在 enter link description here

1

您是否嘗試過使用AND這樣的:

CASE 
WHEN middlename != '' AND lastname != '' THEN firstname + middlename + lastname 
ELSE '' 
END AS fullname 
相關問題