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