列をtrueまたはfalseのみにするビューを作成しようとしています。しかし、私が何をしても、SQL Server(2008)は、私のビット列がどういうわけかnullになる可能性があると信じているようです。
「ステータス」列が「製品」というテーブルがありますINT, NULL。ビューでは、Product.Status列が3に等しい場合はBIT列をtrueに設定し、それ以外の場合はビットフィールドをfalseに設定して、Productの各行の行を返します。
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。:-)