11
votes

Colonne de bits calculée qui retourne si une autre colonne est null

J'essaie d'avoir cette colonne calculée: xxx


0 commentaires

3 Réponses :


19
votes

Ceci fonctionne:

CREATE TABLE dbo.Item
(
    ItemId int NOT NULL IDENTITY (1, 1),
    SpecialItemId int NULL,
    IsSpecialItem AS
        CAST(CASE ISNULL(SpecialItemId, 0) WHEN 0 THEN 0 ELSE 1 END AS bit)
)


1 commentaires

Cela ne fonctionne que lorsque la colonne testée est numérique. Si SpecialItemid est Nvarchar et a une valeur, cela provoque une erreur. Voir mon autre réponse



2
votes

SQL Server n'a pas de type de données Boolean natif (en ce sens que vous pouvez utiliser une variable à la place d'une expression booléenne, comme Sélectionnez * à partir de l'élément ISSPecialitem ). La seule façon dont vous pouvez le représenter est avec quelque chose comme Mark suggère, à l'aide de valeurs réservées (dans ce cas, votre requête serait SELECT * à partir de l'élément d'ISSPecialitem = 1 ).


0 commentaires

16
votes

La réponse de Mark Byer provoque une erreur avec NvarchaRar Colonnes, les œuvres suivantes, que ce soit La colonne est int ou nvarchar : xxx


0 commentaires