MYSQL使用带有CASE的concat函数

7
SELECT CONCAT(firstname," ",lastname," ",CASE dept_id
WHEN  '1'    THEN  'ITD'
WHEN  '4'    THEN  'FMAD'
WHEN  '6'    THEN  'GCSMD'
WHEN  '7'    THEN  'SSHED'
WHEN  '10'   THEN  'GPD'
ELSE  'Z_ISDC'
END AS ayam) as staffname
FROM ost_staff

我想要从staffname得到的输出是"John Doe ITD",但是它没有生效。

请指明哪里出了问题。 - M Khalid Junaid
“它不起作用”是任何问题的绝对糟糕的描述。 - lc.
“它不工作”不是一个合适的错误信息,请详细解释一下到底哪里出了问题。 - BMN
2个回答

20

尝试这个,你的 CASE 格式不正确。

SELECT 
CONCAT(firstname," ",lastname," ",
CASE WHEN dept_id = '1' THEN 'ITD' 
     WHEN dept_id = '4' THEN 'FMAD' 
     WHEN dept_id = '6' THEN 'GCSMD' 
     WHEN dept_id = '7' THEN 'SSHED' 
     WHEN dept_id = '10' THEN 'GPD' ELSE 'Z_ISDC' END) 
as staffname 
FROM ost_staff

另外,你不能给你的CASE命名,简单的ENDCASE必需的。


能否请下投票者解释一下他的行为? - BMN
我刚想问自己 :) - Mad Dog Tannen
1
不是我给你点踩的,但如果你解释一下你所做的事情(从case中删除别名,而不是格式化case),可能会有所帮助。 - fancyPants
我发现CASE是错误的,但会加上解释。 - Mad Dog Tannen
你能解释一下为什么你不像楼主那样使用 CASE <column> WHEN <expr> 吗? - lc.
显示剩余2条评论

1

CASEEND 中删除 AS ayam

当您将 CASE 子句的结果用作 CONCAT 的参数时,不能使用别名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接