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

标签 sql-server sql-server-2008 tsql

除非此处的所有 CASE 语句都是 True,否则它会为整个 Options 列返回 Null。 我想不通的是如何返回任何 True CASE 语句,即:如果 Col2,Col4 不为空,则只返回那些值。我不知道还能尝试什么,帮忙?

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

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

最佳答案

像这样:

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

关于sql-server - 在一列中返回多个 CASE 语句中的任何一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16351293/

相关文章:

xml - 如何给同级的xml节点分配ID

sql - 存储过程中的返回计数

sql - 在某些 Sql 代码中,如何获取给定索引的字符串的字符值?

php sql 错误消息更改了数据库上下文

c# - EF 5 更新超时;可能是由于死锁

sql - 获取列上的时间,忽略文本

sql-server - 在sql server 2008中将行检索为列

sql - SQL Server中如何生成随机数据

java - 列索引无效

sql-server - SQL Server 与案例合并吗?