2

除非CASE这里的所有语句都是 True,否则它会返回Null整个Options列。我不知道如何返回任何 TrueCASE语句,即:如果 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。

4

2 回答 2

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
于 2013-05-03T03:52:42.317 回答
2

What @Pieter said, of course, but there are also

  1. ISNULL:

    SELECT
        ISNULL('<li>' + Col1 + '</li>', '') +
        ISNULL('<li>' + Col2 + '</li>', '') +
        ISNULL('<li>' + Col3 + '</li>', '') +
        ISNULL('<li>' + Col4 + '</li>', '') AS Options
    FROM TABLE
    ;
    

    and

  2. COALESCE:

    SELECT
        COALESCE('<li>' + Col1 + '</li>', '') +
        COALESCE('<li>' + Col2 + '</li>', '') +
        COALESCE('<li>' + Col3 + '</li>', '') +
        COALESCE('<li>' + Col4 + '</li>', '') AS Options
    FROM TABLE
    ;
    
于 2013-05-14T04:49:33.503 回答