院生エンジニアのにっき

  • Change style to Blue
  • Change style to Red
  • Change style to Green
  • Change style to Pink

SQLにてnull値の比較   2007-11-21

  1. SELECT CASE ***
  2. WHEN 1 THEN '1です'
  3. WHEN NULL THEN 'null'
  4. ELSE 'その他' end
にそれぞれ'1'、1、null、2と入れてみた結果は??

  • 1→1です
  • null→その他
  • 2→その他

null=nullはfalseになるようです。

ただ、両方ともnull値ならtrueを返して欲しい場合もきっとあるかと思います。そんな時SQLでは

  1. SELECT CASE isnull(***,-1)
  2. WHEN 1 THEN '1です'
  3. WHEN -1 THEN 'null'
  4. ELSE 'その他' end

とすれば***にnullを入れた場合nullと出力されます。当然***を-1とするとnullが出力されてしまうので、***が-1になることがないような場合に有効です。

それにしてもなぜSQLサーバーにはLIMITが無いのでしょう。。ウェブアプリでページャーを作るだけでも敷居が高くなってしまうよな(SQL ServerでSELECT * FROM TABLE ORDER BY ITEM の結果の最初の1件目を取り出すのは、TOP 1かと思いますが、3件目だけ取り出したい場合は、どうすればよいのでしょうか?.. - 人力検索はてなあたりで書かれています。やっぱりn件取得してひっくりかえすんですかねぇ。無駄が多そう...)。

※安易にisnullを使いまくるとテーブルのindexを有効活用できなかったりするので、必要な場合を考えて利用しましょう。


コメントを書く