Pergunta

Eu tenho uma coluna DateTime anulável na minha mesa SQL Server 2005 chamado DateTimeDeleted.

Eu gostaria de ter uma coluna computada tipo BIT que é 1 se DateTimeDeleted não é nulo, caso contrário 0. No entanto, eu não consigo obter a sintaxe da fórmula correta.

Eu tentei:

(TsDeleted IS NULL) = 0

mas dá-me um erro de sintaxe.

Ajuda! :)

Foi útil?

Solução

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

A saída será como um inteiro ... Se você realmente quer que ele seja um pouco, então:

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

Outras dicas

Eu acho que isso deve funcionar:

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

Este trabalho será, basicamente, ele faz uma divisão por si só, se não é nulo e, em seguida, dividir 0 por 1 se é NULL

CONVERT(INT,IsNULL(DateTimeDeleted,0))/CONVERT(INT,IsNULL(DateTimeDeleted,1))
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top