SQL クエリでの NULL の特別な処理

第1条 四則演算

数値と NULL を加算、減算、乗算、除算する場合、プログラムは NULL を認識しないため、演算結果がどうなるかがわかりません。そのため、最終的には NULL を返すことしかできません。

第2条 比較演算

数値、文字列、または日付を NULL と比較する場合、プログラムはどちらが NULL より大きいか小さいか、またはそれらが同じ値であるかどうかを知りません。そのため、プログラムは「わかりません」と答えることしかできません。比較結果がTrueデータを返します。IS NULLIS NOT NULLの意味がわかりました。これら 2 つの述語は、特に NULL 値の処理を担当します。

第3条 グループ別

このようにして group by の実行ロジックを理解することができます 例えば、集計キーに a、b、c の 3 つの非 NULL 値があり、各行を自動的にループし、その値を比較します各行に a、b、c があり、それらが等しい場合、その結果、NULL 値が見つかった場合、プログラムは比較できないため、方法がなくなり、最終的に NULL は 1 つのカテゴリのみに分割されます。

第4条 パラメータの受け渡し

同様に、 NULL が算術関数、文字列関数、日付関数、変換関数にパラメーターとして渡された場合、プログラムは NULL を認識せず、その処理方法を知らないため、結果は NULL のみを返すことができます

第 5 節 集計関数

上で述べたとおり、NULL 値は比較できず、計算にも参加できないため、集計関数はより賢く、最初に NULL 値を自動的に除外し、残りの値についてのみ計算を実行するため、 NULL 値に遭遇するとすぐに使えなくなるのは恥ずかしいことです。
COUNT (特定の列)この列に NULL 値が含まれている場合、最初に NULL 値のデータも削除され、NULL 以外の値を持つ行数のみが返されるため、取得したい場合はNULL 値を含むすべての行の数を指定するには、 COUNT(*) を使用する必要があります

第7条 order by

order byの実行ロジックにも比較処理があり、すべての値はサイズを比較してソートされ、NULL値は他の値と比較できません。そのため、order byを設計する際には、単にNULLだけを取り出すか、それらをすべて先頭に配置するか、最後に配置するかによって、RDBMS ごとに設計が異なり、NULL 値と NULL 値の間の順序はランダムになります。

おすすめ

転載: blog.csdn.net/SingDanceRapBall/article/details/115418193