【发布时间】:2012-12-01 18:00:12
【问题描述】:
我需要CONCAT 两个字段,如果它们都存在并在第二个字段周围添加括号。否则我只需要列出第一个字段。
这是简单的版本:
SELECT id, CONCAT(name,' (',nickname,')') as name FROM user;
只要名字和昵称都存在,你应该得到如下结果:
1 | Adam (Alpha Dog)
2 | Bob (Bobby)
3 | Charles (Charlie)
但如果没有昵称,它会跳过整个内容为null。例如:id 4,姓名Doug,昵称null 给出结果:
4 | null
我希望看到的是只列出名字......像这样:
4 | Doug
所以我开始关注CONCAT IFNULL。但我很难做到正确。你能帮忙吗?
以下是我尝试过的一些示例:
SELECT id, CONCAT(IFNULL(name, ' (', nickname, ')', name) as name FROM user;
SELECT id, CONCAT(name, IFNULL(' (', nickname, ')')) as name FROM user;
【问题讨论】:
-
IFNULL( CONCAT( '(', 昵称, ')' ), '' )
-
有些事情一开始让我很反感。当昵称为 null 时,CONCAT('(',nickname,')') 也将返回 null。
标签: mysql concatenation concat ifnull