第1部 魔法のSQL 1-3 3値理論とNULL|達人に学ぶSQL徹底指南書
1-3 3値理論とNULL
1. 比較述語とNULL その1:排中律が成立しない
「命題とその否定を「または」でつなげてできる命題はすべて真である」というのが排中律。
2. 比較述語とNULL その2:CASE式とNULL
単純CASE式のCASE col_1 WHEN NULLは、col_1 = NULLの省略形なので、trueにならず思ったような動作にならない。
3. NOT INとNOT EXISTSは同値ではない
NOT INのサブクエリで使用されるテーブルの選択列にNULLが存在する場合、 SQL全体の結果は常に空になる。
EXITSはtrue とfalse しか返さない。そのため、INとEXISTSは同値変換が可能だが、NOT INとNOT EXISTSは同値ではない。
4. 限定述語とNULL
ALL述語は条件をANDで連結した論理式の省略形。
5. 限定述語と極値関数は同値ではない
極値関数は 集計の際にNULLを排除する、 入力が空集合だった場合はNULLを返す。
比較対象が存在しない場合、全行を返すべきか1行も返さないべきか、判断が必要。
6. 集約関数とNULL
COUNT関数以外の集約関数も、入力が空の場合NULLを返す。
NULLを何らかの値に変換するか、帰ってきたNULLに対処するのかのどちらかを選ぶ必要がある。
まとめ
NULLみな死すべし、慈悲はない
Link
Latest post:
- OpenWhiskのScala sbtプロジェクトのgiter8テンプレートを作った
- OpenWhisk+Scalaで作るServerless Architectureとっかかり
- BluemixにPlayframeworkアプリケーションをデプロイする
- sbt、Giter8を統合するってよ
- Scala 2.12.0でSAM型
