Sql server 2005 在datetime上创建计算列

Sql server 2005 在datetime上创建计算列,sql-server-2005,calculated-columns,Sql Server 2005,Calculated Columns,我的SQLServer2005表中有一个名为DateTimeDeleted的可为空的DateTime列 如果DateTimeDeleted不为null,我希望位类型计算列为1,否则为0。然而,我似乎无法获得公式的正确语法 我试过: (TsDeleted IS NULL) = 0 但它给了我一个语法错误 救命!:) 我认为这应该行得通: update table set IsDeleted = case when DateTimeDeleted is null then 0 else 1 end

我的SQLServer2005表中有一个名为DateTimeDeleted的可为空的DateTime列

如果DateTimeDeleted不为null,我希望位类型计算列为1,否则为0。然而,我似乎无法获得公式的正确语法

我试过:

(TsDeleted IS NULL) = 0
但它给了我一个语法错误


救命!:)

我认为这应该行得通:

update table
set IsDeleted = 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)

这将起作用,基本上,如果它不是空的,它会自己除法,如果它是空的,它会用0除以1

CONVERT(INT,IsNULL(DateTimeDeleted,0))/CONVERT(INT,IsNULL(DateTimeDeleted,1))

这将设置一个位列,但我认为他正在寻找一种构造计算列的方法。计算列必须是表达式,但不能是子查询。谢谢Charles-这很好。实际上我以前用过,但我一定忘了。这不是有点复杂吗?我的意思是,它很聪明,但很难阅读,意图不明确,而且它在进行不必要的数学运算。
CONVERT(INT,IsNULL(DateTimeDeleted,0))/CONVERT(INT,IsNULL(DateTimeDeleted,1))