Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在一列中返回多个CASE语句中的任意一个_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

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
。 我不知道如何返回任何True
CASE
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
    ;