【SQLを丁寧に理解する】CHARとVARCHAR2【ORACLEの場合】PART2
こんにちは、EightyEightRiceです。
今日の記事は、【SQLを丁寧に理解する】CHARとVARCHAR【ORACLE】PART2です。
データベースを扱い場合に、よくハマってしまう項目について、丁寧に説明していきます。
ざっと読み飛ばすだけでも、
「へぇーそうなんだ」
と、思っていただけるような構成を心がけています。
今回は
CHARとVARCHAR2【ORACLEの場合】PART2
です。
前回でざっくりまずのイメージは掴めたと思います。
今回はさらに理解が深まるように、丁寧に解説していきます。
まず、準備として以下の2つの用語の使い方を解説します。
・NULL
・空文字
「NULL」は、データベースでは"値がない"という状態を表す為に用います。
しかし、これはよくわかりませんね。
値がないというのは形式的な言い方で、
感覚的には"比較不能"、くだけた言い方では"比べられない"という意味で覚えて良いと思います。
さらにかみ砕いて言うと、"比べられない"というのは、
SQLの等式・不等式がすべてFALSEになるという事です。
以下、すべてFALSEです。
'ABC' = NULL
0 >= NULL
0 < NULL
NULL = NULL
最後のパターンは初心者がよく間違えてしまいます。
NULLとNULLで同じなのでTRUEのように見えますが、
もちろん、NULLとNULLも比べられず、結果はFALSEになります。
「空文字」とは、プログラミングではよく聞く用語ですが、長さが0の文字列と考えて良いでしょう。
シングルクォーテーション(")で文字列を表す場合、
「''」が空文字です。
「'」と「'」の間に何もないですね。これが空文字です。
と、解説しましたが、実はORACLEに空文字は存在しません。
ORACLEで「''」と書いた場合、NULLとして扱われます。
以上を踏まえたうえで、以下の等式はFALSEになります。
'' = ''
なぜかというと、
空文字('')はORACLEではNULLなので、上記等式は、
・'' = '' ➡ NULL = NULL
つまり、FALSEとなります。
以上、解説でした。