如果列为空或不为空,如何在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上。一旦你有了应用程序等,升级可能会成为一项昂贵的风险活动,没有人愿意为此付费。