Domanda

Ho una colonna DateTime nullable nella mia tabella di SQL Server 2005 denominata DateTimeDeleted.

Vorrei avere una colonna calcolata di tipo BIT che è 1 se DateTimeDeleted non è null, altrimenti 0. Tuttavia, non riesco a ottenere la sintassi per la formula corretta.

Ho provato:

(TsDeleted IS NULL) = 0

ma mi dà un errore di sintassi.

Aiuto! :)

È stato utile?

Soluzione

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

Questo verrà visualizzato come un numero intero ... Se vuoi davvero che sia un po ', allora:

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

Altri suggerimenti

Penso che dovrebbe funzionare:

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

Funzionerà, fondamentalmente fa una divisione da sola se non è nulla e poi divide 0 per 1 se è NULL

CONVERT(INT,IsNULL(DateTimeDeleted,0))/CONVERT(INT,IsNULL(DateTimeDeleted,1))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top