物流・倉庫・WMS・プログラマ日記

物流・倉庫・WMS・プログラマ日記

在庫管理・倉庫管理を扱う事が多いプログラマの備忘録です。

【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となります。

 

以上、解説でした。

関連記事

記事一覧