首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用mysql中的case语句将3列数据合并为一个

如何使用mysql中的case语句将3列数据合并为一个
EN

Stack Overflow用户
提问于 2015-04-20 15:33:16
回答 4查看 70关注 0票数 0

我有一张名、名、姓的桌子。我想将这3列数据添加到一个完整的名称中,就好像middlename != '‘,那么fullname = want =want,如果lastname != '’,那么fullname =want lastname。我试过如下,但没有影响行。

代码语言:javascript
复制
UPDATE studentprofiles SET fullname = CASE middlename WHEN middlename !=  '' THEN firstname +  ' ' + middlename ELSE firstname END WHERE fullname = ''

怎么做?我必须更新多行。欢迎任何帮助/建议。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-04-20 16:54:07

问题的解决办法如下:

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2015-04-20 16:44:59

您是否尝试过像这样使用AND

代码语言:javascript
复制
CASE
WHEN middlename != '' AND lastname != '' THEN firstname + middlename + lastname
ELSE ''
END AS fullname
票数 1
EN

Stack Overflow用户

发布于 2015-04-20 15:42:30

为什么不能简单地连接列数据,比如

代码语言:javascript
复制
UPDATE studentprofiles 
SET fullname = concat(firstname, middlename, lastname);

编辑:在这种情况下可以使用IFNULL()函数,如

代码语言:javascript
复制
UPDATE studentprofiles 
SET fullname = IFNULL(firstname,'') +
               IFNULL(middlename, '') +
               IFNULL(lastname, '');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29752199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档