简体   繁体   English

如何在MySQL中使用case语句将3列数据合并为一个

[英]how to get data of 3 columns into one using case statement in mysql

I have a table with firstname, middlename, lastname. 我有一个名字,中间名,姓氏的表。 I want to add these 3 column data into one as fullname as if middlename != '' then fullname = firstname middlename and if lastname != '' then fullname = firstname middlename lastname. 我想将这3列数据作为全名添加到一个字段中,就好像Middlename!=”,那么fullname = firstname middlename,如果lastname!=”,那么fullname = firstname middlename lastname。 I tried as follows but no row is affected. 我尝试如下,但没有行受到影响。

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

How to do this? 这个怎么做? I have to update multiple rows. 我必须更新多行。 Any help/suggestions are welcome. 欢迎任何帮助/建议。

Have you tried using an AND like this: 您是否尝试过使用AND

CASE
WHEN middlename != '' AND lastname != '' THEN firstname + middlename + lastname
ELSE ''
END AS fullname

The problem is solved as follows: 问题解决如下:

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

Why can't you simply concatenate the columns data like 为什么不能简单地将列数据串联起来

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

EDIT: In that case you can use IFNULL() function like 编辑:在那种情况下,您可以使用IFNULL()函数,例如

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

try to use this : 尝试使用这个:

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

check this link for more information enter link description here 检查此链接以获取更多信息, 在此处输入链接描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM