Ich versuche, eine Ansicht zu erstellen, in der eine Spalte nur wahr oder falsch sein soll. Es scheint jedoch, dass SQL Server (2008), egal was ich tue, glaubt, dass meine Bitspalte irgendwie null sein kann.
Ich habe eine Tabelle namens "Produkt" mit der Spalte "Status" INT, NULL
. In einer Ansicht möchte ich für jede Zeile in Product eine Zeile zurückgeben, wobei eine BIT-Spalte auf true gesetzt ist, wenn die Product.Status-Spalte gleich 3 ist. Andernfalls sollte das Bitfeld false sein.
Beispiel SQL
SELECT CAST( CASE ISNULL(Status, 0)
WHEN 3 THEN 1
ELSE 0
END AS bit) AS HasStatus
FROM dbo.Product
Wenn ich diese Abfrage als Ansicht speichere und die Spalten im Objekt-Explorer betrachte, wird die Spalte HasStatus auf gesetzt BIT, NULL
. Aber es sollte niemals NULL sein. Gibt es einen magischen SQL Trick , den ich verwenden kann , um diese Spalte zu zwingen , zu sein NOT NULL
.
Beachten Sie, dass, wenn ich das um das CAST()
herum entferne CASE
, die Spalte korrekt als festgelegt ist NOT NULL
, aber dann der Spaltentyp auf festgelegt ist INT
, was nicht das ist, was ich will. Ich möchte, dass es so ist BIT
. :-)