【问题标题】:CASE THEN using CONCAT()案例然后使用 CONCAT()
【发布时间】:2019-08-30 04:00:36
【问题描述】:

我有一个复杂的连接部分,其中包括一个 CASE WHEN 来构造一个 URL。这对于部分构造来说效果很好,但是当每个 CASE 都包含一个 Concat 时,我在做 CASE 时遇到了问题。我有几个案例中的任何一个都可以单独使用

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

CASE WHEN T1.Name='Y' THEN Concat('B',T1.Field2)
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 服务器版本以获得正确的语法 在第 5 行的 CASE WHEN T1.Name='X' THEN Concat' 附近使用

【问题讨论】:

  • 如果我没记错的话,你的语法是错误的。 Donno 关于 MySQL,Oracle 应该有“当 condition0 然后 stmnt0 当 condition1 然后 stmnt1 else end”的情况。所以“case”不会重复。
  • 这有很清楚的例子:dev.mysql.com/doc/refman/8.0/en/case.html

标签: mysql concat case-when


【解决方案1】:

您正试图在第一个函数中启动另一个 CASE 函数。删除第二个CASE,它应该可以工作:

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

【讨论】:

  • 也使用T1.Field1 而不是T1,Field1。注意逗号与句号。
  • @BillKarwin 是的,这就是我复制/粘贴所得到的。
  • @ItsPete Man 谢谢,ROOKIE 错误。无论如何我都会把它留在这里作为路标
猜你喜欢
  • 1970-01-01
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-13
  • 2020-09-12
  • 2021-11-03
相关资源
最近更新 更多