2009-09-30 6 views
8

Je souhaite utiliser une colonne de bits calculée qui sera vraie si une autre colonne de la table n'est pas nulle. Quelle est la bonne formule pour cela?Syntaxe de la formule de colonne calculée par le serveur Sql

HasLabel = computed column (bit) 
Label = varchar NULL 

La formule suivante n'est pas valide. - Qu'est-ce que je rate?
Formule pour HasLabel = Label IS NOT NULL

Répondre

26

Une colonne calculée doit renvoyer une valeur, alors que vous êtes en train de faire une comparaison. Essayez ceci à la place:

case when label is null then 0 else 1 end 

SQL Server ne comprendra pas cela comme une colonne non-NULLable. Pour gérer cela, modifiez le calcul à:

isnull(case when label IS NULL then 0 else 1 end, 0) 
+1

Ou 'ISNULL (CASE WHEN label est NULL THEN 0 END, 1)' est un peu plus court. –

+0

@MartinSmith Et celui-ci est encore un peu plus court: 'isnull (cas où label> 1 puis 1 fin, 0)' – RedFilter