2010年1月1日金曜日

NULLで演算子が使用できない理由

NULL は 値ではない


NULLはゼロやスペースなどの値とは異なり、
値が使用不可能、未割当、不明などを表す。

このため、NULLは すべての'値'と比較することはできず、等価にも非等価にもならない

NULLと値で演算子を使用した場合、エラーにはならないが、
条件に該当する値がないため検索されるデータはない。

NULLとNULLを比較する場合もしかりで、
よくわからないものとよくわからないものを比較しても
同じかどうかなんかわかるわかるわけないよね。

2009年12月31日木曜日

ORDER BY 句

ASC    昇順ソート
DESC  降順ソート

ORDER BY 句には複数列を指定することもできる。
この場合、ソートのキーワード(ASC,DESC)は列ごとに指定する。

キーワードを省略した場合は昇順にソートされる。

ORDER BY 句には列名や式を指定する以外にも、
列別名、列番号を指定することもできる。

文字データ アルファベット順
数値データ 小さい値順
日付データ 古い日付順


NULLは昇順ソートでは最後に表示される。

GROUP BY句やHAVING句で、SELECT句で定義した別名が使えない理由


HAVING句はあくまでGROUP BY句に対する条件であるため。

選択式の値は、FROM→WHERE→GROUP→HAVING→SELECT句の順に
評価される仕様になっている。

SELECT句より先に解釈されるGROUP BY句やHAVING句で、SELECT句の別名が使えるわけないよね~~~。

納得。