tes*_*ter 2 mysql sql concatenation
假设我有一个包含这些列的表:
DATA1 | DATA2 | DATA3
Run Code Online (Sandbox Code Playgroud)
我想打印:DATA1 (DATA2)
如果 DATA2 不为空,则仅DATA1
当DATA2
为空时。如果我用 concat 来做:
SELECT CONCAT(DATA1," (",COALESCE(DATA2,""),")")
Run Code Online (Sandbox Code Playgroud)
我的问题是“(”和“)”总是被打印,即使 DATA2 为空,所以我将得到结果:DATA1 ()
而不是DATA1
有什么办法可以用 mysql 数据库上的 sql 来做到这一点吗?
到这里你已经得到了一半的答案。如果任何值为 null,CONCAT
则将产生。NULL
您正在使用COALESCE
,因此您的整个结果不为空(如果DATA2
是),因此只需在合并中包含“()”即可。
尝试这个
SELECT CONCAT(
DATA1,
COALESCE(
CONCAT(" (",DATA2,")")
,"")
)
Run Code Online (Sandbox Code Playgroud)