[英]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.