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