Mysql 在Select中使用大小写时,将字段与纯文本连接起来?

Mysql 在Select中使用大小写时,将字段与纯文本连接起来?,mysql,sql,Mysql,Sql,我可能最终不得不在结果集中使用我的PHP来完成这项工作,但我希望DB能帮我完成这项工作。我想检查一个字段,如果它符合条件,将另一个字段设置为另一个字段+字符串。以下是我的尝试: SELECT CASE UnityReq WHEN '1' THEN Table + ' (Unity)' ELSE Table END AS Type 如果表等于Event,那么我希望将“Event(Unity)”作为类型 我在另一篇文章中看到,如果与字符串组合,则必须强制转换字段,因此我尝试了以下方法: SELEC

我可能最终不得不在结果集中使用我的PHP来完成这项工作,但我希望DB能帮我完成这项工作。我想检查一个字段,如果它符合条件,将另一个字段设置为另一个字段+字符串。以下是我的尝试:

SELECT CASE UnityReq WHEN '1' THEN Table + ' (Unity)' ELSE Table END AS Type
如果表等于Event,那么我希望将“Event(Unity)”作为类型

我在另一篇文章中看到,如果与字符串组合,则必须强制转换字段,因此我尝试了以下方法:

SELECT CASE WHEN UnityReq = 1 THEN CAST(Table AS NVARCHAR(200)) + ' (Unity)' ELSE Table END AS Type
并尝试了MySQL CONCAT函数:

SELECT CASE UnityReq WHEN 1 THEN CONCAT(Table, ' (Unity)') ELSE Table END AS Type

我也尝试过在数字周围加引号或不加引号的WHEN(因为它是一个INT字段),以及在谷歌上搜索到的每种格式的CASE,但我总是会遇到SQL语法错误。我觉得我已经尝试了这个命令的每一个版本,但我没有任何运气。有什么建议吗?

你要的不是强制转换,而是连接

比如:

SELECT
    CASE WHEN UnityReq = 1 THEN CONCAT(Table, ' (Unity)') ELSE Table END AS Type
  FROM ...

奇怪的是,这起作用了。我想我以前已经试过了(见我的第三次尝试),但显然我的SQL中有其他错误,或者可能是CASE语句中的语法错误。谢谢可以在值时使用CASE列,也可以在表达式时使用CASE列。我怀疑,如果有足够多的CASE语法和CAST/CONCAT组合,您可能已经达到了目的:-)