MySQL 仅当条件有效时才进行连接选择

tes*_*ter 2 mysql sql concatenation

假设我有一个包含这些列的表:

DATA1 | DATA2 | DATA3
Run Code Online (Sandbox Code Playgroud)

我想打印:DATA1 (DATA2)如果 DATA2 不为空,则仅DATA1DATA2为空时。如果我用 concat 来做:

SELECT CONCAT(DATA1," (",COALESCE(DATA2,""),")")
Run Code Online (Sandbox Code Playgroud)

我的问题是“(”和“)”总是被打印,即使 DATA2 为空,所以我将得到结果:DATA1 ()而不是DATA1

有什么办法可以用 mysql 数据库上的 sql 来做到这一点吗?

Cod*_*ian 5

到这里你已经得到了一半的答案。如果任何值为 null,CONCAT则将产生。NULL您正在使用COALESCE,因此您的整个结果不为空(如果DATA2是),因此只需在合并中包含“()”即可。

尝试这个

SELECT CONCAT(
              DATA1,
              COALESCE(
                         CONCAT(" (",DATA2,")")
                       ,"")
              )
Run Code Online (Sandbox Code Playgroud)