fc2ブログ
 

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ブログユーザー)