列を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
。:-)