Sql server 在一列中返回多个CASE语句中的任意一个
除非此处的所有Sql server 在一列中返回多个CASE语句中的任意一个,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,除非此处的所有CASE语句都为真,否则它将为整个Options列返回Null。 我不知道如何返回任何TrueCASEstations,即:如果Col2,Col4不是null,那么只返回那些值。我不知道还能试什么,救命啊 SELECT CASE WHEN Col1 Is Not Null THEN '<li>' + Col1 + '</li>' END + CASE WHEN Col2 Is Not Null THEN '<li>' + Col2 + '<
CASE
语句都为真,否则它将为整个Options
列返回Null
。
我不知道如何返回任何TrueCASE
stations,即:如果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
选择
如果Col1不为Null,则“”+Col1+” ”结束+
如果Col2不为Null,则“”+Col2+” ”结束+
如果Col3不为空,则“”+Col3+” ”结束+
如果Col4不为Null,则“”+Col4+” “结束选项”
从桌子上
同样,问题是除非找到所有的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
选择
如果Col1不为Null,则“”+Col1+” “ELSE”结束+
如果Col2不为Null,则“”+Col2+” “ELSE”结束+
如果Col3不为Null,则“”+Col3+” “ELSE”结束+
如果Col4不为Null,则“”+Col4+” “ELSE”结束选项
从桌子上
当然,但也有
IIF函数提供了更好的格式(这是编写case语句的一种短方法)-
SELECT
ISNULL('<li>' + Col1 + '</li>', '') +
ISNULL('<li>' + Col2 + '</li>', '') +
ISNULL('<li>' + Col3 + '</li>', '') +
ISNULL('<li>' + Col4 + '</li>', '') AS Options
FROM TABLE
;
SELECT
COALESCE('<li>' + Col1 + '</li>', '') +
COALESCE('<li>' + Col2 + '</li>', '') +
COALESCE('<li>' + Col3 + '</li>', '') +
COALESCE('<li>' + Col4 + '</li>', '') AS Options
FROM TABLE
;