我在SQL Server 2005中的表可为空的DateTime列称为DateTimeDeleted。

我想有一个BIT类型计算列,它是1,如果DateTimeDeleted不为空,否则为0。然而,我似乎无法得到该式正确的语法。

我已经试过:

(TsDeleted IS NULL) = 0

,但它给我一个语法错误。

帮助! :)

有帮助吗?

解决方案

Alter Table MyTableName 
  Add IsDeleted As 
     (Case When [DateTimeDeleted] Is Null 
       Then (0) Else (1) End)

这将输出作为一个整数......如果你真的希望它是一个位,则:

Alter Table MyTableName 
  Add IsDeleted As 
     cast( (Case When [DateTimeDeleted] Is Null 
       Then (0) Else (1) End) as Bit)

其他提示

我觉得这应该工作:

update table
set IsDeleted = case when DateTimeDeleted is null then 0 else 1 end

这将工作,基本上它本身并分频,如果它不是空,然后通过1除以0,如果它是NULL

CONVERT(INT,IsNULL(DateTimeDeleted,0))/CONVERT(INT,IsNULL(DateTimeDeleted,1))
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top