SQL Serverで長年働いてきた曖昧な、おそらくはカーゴカルチャーのメモリがあります。空の列がある場合は、WHERE節を書くのは安全ではありません以下のような述語:それはSQLのルールはショートを規定していないという事実とは何かを持っていたSQLと論理演算子とヌルチェック
... WHERE the_column IS NULL OR the_column < 10 ...
」(実際には、クエリの最適化の理由から、おそらく悪いアイデア種類-のだという)、したがって、 < "と比較することができます。今、まさに恐ろしいことになるだろう、なぜ、私は知らないが、私は厳しくその「CASE」句として常にコードにいくつかのドキュメントで警告されリコール:
... WHERE 1 = CASE WHEN the_column IS NULL THEN 1 WHEN the_column < 10 THEN 1 ELSE 0 END ...
(間抜け。「1 =」SQL Serverは/ファーストクラスのブール値を持っていなかったしない、または少なくとも私はそれがなかったと思ったので一部である)
だからここに私の質問は以下のとおりです。
- ですそれはSQL Server(またはおそらくSQL Server 2000または2005のバック版)にとって本当に真実ですか?
- もしそうなら、同じ警告がPostgreSQLに当てはまりますか? (重要な場合は8.4)
- 問題はなんですか?インデックスがどのように機能するのかと関係がありますか?
私のSQLでのアースはかなり弱いです。
おそらく彼らはANDについて話していたでしょうか? nullと何かがnullであるため、式にnull項が含まれる場合は、合体または大文字小文字が必要な場合がよくあります。 –