Mysql 然后使用CONCAT()进行案例分析

Mysql 然后使用CONCAT()进行案例分析,mysql,concat,case-when,Mysql,Concat,Case When,我有一个复杂的连接部分,其中包括一个构建URL的案例。这在部分施工中效果很好,但当每个案例都包含一个Concat时,我会遇到一些问题。我处理的几个案例中的任何一个都是独立的 CASE wHEN T1.Name='X' THEN Concat('A',T1.Field1) ELSE '' END 或 一旦我试着去做 CASE WHEN T1.Name='X' THEN Concat('A',T1.Field1) CASE WHEN T1.Name='X' THEN Concat('A',T1.

我有一个复杂的连接部分,其中包括一个构建URL的案例。这在部分施工中效果很好,但当每个案例都包含一个Concat时,我会遇到一些问题。我处理的几个案例中的任何一个都是独立的

CASE wHEN T1.Name='X' THEN Concat('A',T1.Field1)
ELSE ''
END

一旦我试着去做

CASE WHEN T1.Name='X' THEN  Concat('A',T1.Field1)
CASE WHEN T1.Name='X' THEN Concat('A',T1.Field2)
ELSE ''
END
我得到一个错误,比如

[Err]1064-您的SQL语法有错误;检查手册 对应于MySQL服务器版本的正确语法 当T1.Name='X'然后在第5行使用Concat'时,使用近义词


您正试图在第一个案例中启动另一个
案例
函数。拆下第二个
案例
,它应该可以工作:

CASE WHEN T1.Name='X' THEN  Concat('A',T1.Field1)
     WHEN T1.Name='Y' THEN Concat('A',T1.Field2)
ELSE ''
END

如果我记性好,你的语法就错了。关于MySQL,Oracle应该有“当条件0时,然后是stmnt0,当条件1时,然后是stmnt1 else end”的情况。所以“case”不会重复。这有非常清楚的例子:也可以使用
T1.Field1
而不是
T1,Field1
。注意逗号和句点的对比。@BillKarwin是的,这就是我复制/粘贴的结果。@Its皮特,谢谢,新手犯了错误。无论如何,我会把这个放在这里作为路标
CASE WHEN T1.Name='X' THEN  Concat('A',T1.Field1)
     WHEN T1.Name='Y' THEN Concat('A',T1.Field2)
ELSE ''
END