Estoy tratando de crear una vista en la que quiero que una columna sea solo verdadera o falsa. Sin embargo, parece que no importa lo que haga, SQL Server (2008) cree que mi columna de bits puede ser nula de alguna manera.
Tengo una tabla llamada "Producto" con la columna "Estado" que es INT, NULL
. En una vista, quiero devolver una fila para cada fila en Producto, con una columna BIT establecida en verdadero si la columna Product.Status es igual a 3; de lo contrario, el campo de bits debería ser falso.
SQL de ejemplo
SELECT CAST( CASE ISNULL(Status, 0)
WHEN 3 THEN 1
ELSE 0
END AS bit) AS HasStatus
FROM dbo.Product
Si guardo esta consulta como una vista y miro las columnas en el Explorador de objetos, la columna HasStatus se establece en BIT, NULL
. Pero nunca debería ser NULO. ¿Hay algún truco mágico de SQL que pueda usar para forzar que esta columna sea NOT NULL
?
Tenga en cuenta que, si elimino el CAST()
alrededor de CASE
, la columna se establece correctamente como NOT NULL
, pero luego el tipo de columna se establece en INT
, que no es lo que quiero. Yo quiero que sea BIT
. :-)