ビューでNOT NULLの日付がどのようにヌルになるか
-
21-12-2019 - |
質問
dbo.Traffic
私は日々の交通量データを集約しようとしています。スキーマビューの作成とインデックスの追加を計画しています。
CREATE VIEW [dbo].[vwTraffic] WITH SCHEMABINDING AS
SELECT CONVERT(date, CreateDate) as CreateDate, Circuit, Fuseaction,
COUNT(CreateDate) AS activity
FROM dbo.Traffic WITH (NOLOCK)
GROUP BY CONVERT(date, CreateDate), Circuit, Fuseaction
.
基本テーブルのCreateDateはNULL可能ではありません。ただし、ビューを作成して日付に変換するとすぐに、それはNULL可能になります。
解決
これは、計算列がヌル性の点でどのように振る舞うかのためです。 msdn :
データベースエンジンは、使用されている式に基づいて、計算済み列のヌル性を自動的に決定します。必要なアンダーフローまたはオーバーフローはNULLの結果を生成するため、ノンライセット列のみが存在していてもほとんどの式の結果がヌル可能と見なされます。 ColumnProperty関数を使用して、AltiveNullプロパティを使用して、テーブル内の任意の計算列のヌル性を調べます。 innull(check_expression、定数)を指定することで、nullableの表現を非呼び出し可能なものに変えることができます。ここで、定数はヌル結果の代わりに置き換えられていません。
あなたのCreateDate
としてそれを使うことができます。 NULL
が決してありませんので、定数の値を心配する必要はありません。
ISNULL(CONVERT(date, CreateDate),0) as CreateDate
. 所属していません StackOverflow