在一列中返回多个CASE语句中的任何一个

Con*_*eak 2 t-sql sql-server sql-server-2008

除非CASE此处的所有语句都为True,否则它将返回Null整个Options列.我无法弄清楚的是如何返回任何True CASE语句,即:如果Col2,Col4不为null,则仅返回这些值.我不知道还有什么可以尝试,帮忙吗?

SELECT 
CASE WHEN Col1 Is Not Null THEN '<li>' + Col1 + '</li>' END +
CASE WHEN Col2 Is Not Null THEN '<li>' + Col2 + '</li>' END +
CASE WHEN Col3 Is Not Null THEN '<li>' + Col3 + '</li>' END +
CASE WHEN Col4 Is Not Null THEN '<li>' + Col4 + '</li>' END Options
FROM TABLE
Run Code Online (Sandbox Code Playgroud)

同样,问题是除非Case找到所有语句,否则它将为Options列返回Null .

Pie*_*ens 5

像这样:

SELECT 
CASE WHEN Col1 Is Not Null THEN '<li>' + Col1 + '</li>' ELSE '' END +
CASE WHEN Col2 Is Not Null THEN '<li>' + Col2 + '</li>' ELSE '' END +
CASE WHEN Col3 Is Not Null THEN '<li>' + Col3 + '</li>' ELSE '' END +
CASE WHEN Col4 Is Not Null THEN '<li>' + Col4 + '</li>' ELSE '' END Options
FROM TABLE
Run Code Online (Sandbox Code Playgroud)