Tôi đang cố tạo một chế độ xem mà tôi muốn một cột chỉ đúng hoặc sai. Tuy nhiên, có vẻ như bất kể tôi làm gì, SQL Server (2008) tin rằng cột bit của tôi bằng cách nào đó có thể là rỗng.
Tôi có một bảng có tên "Sản phẩm" với cột "Trạng thái" INT, NULL
. Trong một dạng xem, tôi muốn trả về một hàng cho mỗi hàng trong Sản phẩm, với cột BIT được đặt thành true nếu cột Product.Status bằng 3, nếu không thì trường bit sẽ là false.
SQL mẫu
SELECT CAST( CASE ISNULL(Status, 0)
WHEN 3 THEN 1
ELSE 0
END AS bit) AS HasStatus
FROM dbo.Product
Nếu tôi lưu truy vấn này dưới dạng một dạng xem và xem các cột trong Object Explorer, cột HasStatus được đặt thành BIT, NULL
. Nhưng nó không bao giờ được NULL. Có một số thủ thuật SQL kỳ diệu mà tôi có thể sử dụng để buộc cột này trở thành NOT NULL
.
Lưu ý rằng, nếu tôi xóa CAST()
xung quanh CASE
, cột được đặt chính xác thành NOT NULL
, nhưng sau đó loại của cột được đặt thành INT
, điều này không như tôi muốn. Tôi muốn nó được BIT
. :-)