Technology へようこそ
ここは技術者の「経験」と「ノウハウ」のブログです
2006年04月25日 |
NULLの扱い |
NULLを意識するようになったのは、計算対象数値項目にNULLが設定されている 場合は計算結果がNULLになることを知ってからです。 それ以来、数値項目にNULLを許可するのはキライです。 ただし、NULLに意味を持たせる場合は別ですが。 ところが、SQLServerでは、NULL値に対して集計関数が使用された場合、 例えば、price_data というテーブルが存在し、 ------------------ item_code price ------------------ 10123 210 10124 500 10215 220 10225 10986 350 ------------------ というようなデータが存在した場合、 select sum(price) from price_data を実行すると、 1280 となりますが、ウラでは、 警告 : NULL 値は集計またはその他の SET 演算で削除されました。 という警告がでています。 SQLServerではSUMなどの集計関数はNULL値を排除してくれるのです。 でも、警告が出るのはいやらしいので、実際の作業では、必ず、 isnull()関数を使用したりして集計関数使用時はNULL値が直接計算 対象にならないように配慮するほうが得策です。 declare @a int declare @b int --初期値を代入しないとnull set @a = 1 print(convert(varchar,@a + @b)) --(1) print(convert(varchar,@a + isnull(@b,0))) --(2) とすると、(1)はNULL、(2)は1になります。 |
この記事に対するコメント |
この記事に対するコメントの投稿 |
この記事に対するトラックバック |
トラックバックURL
→http://comfair2.blog24.fc2.com/tb.php/146-ab82b306 この記事にトラックバックする(FC2ブログユーザー) |
|