如果列为空或不为空,如何在SQL中显示不同的结果

如果列为空或不为空,如何在SQL中显示不同的结果,sql,sql-server,Sql,Sql Server,我有一个列(类型为Date),它要么为空,要么不为空。我想创建一个列,根据该列是否为空,显示“已完成”或“未完成”。我环顾四周,找到了IsNull(),但这只允许我选择一个结果 我想象下面这样的SQL语句,但无法找到所需的语法 select rowID, if(isNull(CompletedDate), "Yes", "No") From Table 样本数据 | RowID | CompletedDate | | 1 | 2015-12-01 | | 2 |

我有一个列(类型为
Date
),它要么为空,要么不为空。我想创建一个列,根据该列是否为空,显示“已完成”或“未完成”。我环顾四周,找到了
IsNull()
,但这只允许我选择一个结果

我想象下面这样的SQL语句,但无法找到所需的语法

select rowID, if(isNull(CompletedDate), "Yes", "No")
From Table
样本数据

| RowID | CompletedDate |
|   1   | 2015-12-01    |
|   2   |               |
|   3   | 2015-12-01    |
预期结果

| RowID | Completed|
|   1   | Yes      |
|   2   | No       |
|   3   | Yes      |

这是使用SQL Server完成的,您可以编写如下内容:

select
  rowid,
  case when completeddate is null then 'No' else 'Yes' end as Completed
from tablename

你可以这样写:

select
  rowid,
  case when completeddate is null then 'No' else 'Yes' end as Completed
from tablename

尝试使用
案例


尝试使用
案例


中选择
语句:

IF C THEN R                         = CASE WHEN C THEN R END
IF C THEN R1 ELSE R2                = CASE WHEN C THEN R1 ELSE R2 END
IF C1 THEN R1 ELSE IF C2 THEN R2... = CASE WHEN C1 THEN R1 WHEN C2 THEN R2... END

中选择
语句:

IF C THEN R                         = CASE WHEN C THEN R END
IF C THEN R1 ELSE R2                = CASE WHEN C THEN R1 ELSE R2 END
IF C1 THEN R1 ELSE IF C2 THEN R2... = CASE WHEN C1 THEN R1 WHEN C2 THEN R2... END
这是一种MySql语法
if(isNull(CompletedDate),“Yes”,“No”)
但在SQL Server中,可以通过使用
CASE
IIF
条件来实现

关于案例:

select 
    rowID, 
    CASE WHEN CompletedDate IS NULL THEN 'No'
         ELSE 'Yes'
    END as Completed
IIF
条件下:

select 
    rowID, 
    IIF(CompletedDate IS NULL, 'No', 'Yes') as Completed
这是一种MySql语法
if(isNull(CompletedDate),“Yes”,“No”)
但在SQL Server中,可以通过使用
CASE
IIF
条件来实现

关于案例:

select 
    rowID, 
    CASE WHEN CompletedDate IS NULL THEN 'No'
         ELSE 'Yes'
    END as Completed
IIF
条件下:

select 
    rowID, 
    IIF(CompletedDate IS NULL, 'No', 'Yes') as Completed

注意:
IIF
仅在SQL Server 2012和newerYou是对的,我相信大多数人在2015年底都在使用SQL Server 2012:)你会惊讶于有多少人仍然在使用SQL Server 2008、2005,甚至2000!!即使在2015年底……是的,仍然停留在SQL Server 2008上。一旦你在it上安装了应用程序等,升级可能会成为一项昂贵而危险的活动,没有人愿意为此付费。注意:
IIF
仅在SQL Server 2012和Newer中提供。如果你是对的,我相信大多数人都在2015年底使用SQL Server 2012:)你会惊讶于有多少人仍然使用SQL Server 2008、2005,甚至有2000人!!即使在2015年底……是的,仍然停留在SQL Server 2008上。一旦你有了应用程序等,升级可能会成为一项昂贵的风险活动,没有人愿意为此付费。