Criar uma coluna calculada em um datetime
-
22-07-2019 - |
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! :)
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