열이 참 또는 거짓이되기를 원하는 뷰를 만들려고합니다. 그러나 내가 무엇을하든 SQL Server (2008)는 내 비트 열이 어떻게 든 널이 될 수 있다고 생각합니다.
"상태"열이있는 "제품"이라는 테이블이 INT, NULL
있습니다. 뷰에서 Product.Status 열이 3이면 BIT 열을 true로 설정하여 Product의 각 행에 대해 행을 반환하고, 그렇지 않으면 비트 필드가 false 여야합니다.
SQL 예
SELECT CAST( CASE ISNULL(Status, 0)
WHEN 3 THEN 1
ELSE 0
END AS bit) AS HasStatus
FROM dbo.Product
이 쿼리를 뷰로 저장하고 개체 탐색기에서 열을 보면 HasStatus 열이로 설정됩니다 BIT, NULL
. 그러나 NULL이 아니어야합니다. 내가 할이 열을 강제하는 데 사용할 수있는 몇 가지 마법의 SQL 트릭이 있습니까 NOT NULL
.
CAST()
주변을 제거하면 CASE
열이로 올바르게 설정 NOT NULL
되지만 열의 유형이로 설정되어 INT
원하는 것이 아닙니다. 나는 그것을 원한다 BIT
. :-)