【SQLを丁寧に理解する】CHARとVARCHAR2【ORACLEの場合】PART3
こんにちは、EightyEightRiceです。
今日の記事は、【SQLを丁寧に理解する】CHARとVARCHAR【ORACLE】PART3です。
データベースを扱い場合に、よくハマってしまう項目について、丁寧に説明していきます。
ざっと読み飛ばすだけでも、
「へぇーそうなんだ」
と、思っていただけるような構成を心がけています。
今回は
CHARとVARCHAR2【ORACLEの場合】PART3
です。
前回で
・NULL
・空文字
の解説をしました。これを踏まえた上で、今回は
・TRIM
の解説をして、「NULL」「空文字」との関係を掴んでいければ、
と思います。
「TRIM」は、SQLやPLSQLにおいて、標準で定義されている関数です。
SQLやPLSQL以外でも標準関数として定義している言語も多いです。
どんな処理を行う関数かと、
「引数で与えられた文字列に対し、
前後の半角スペース・全角スペースを取り除いたものを戻り値として返す」
関数です。
具体的な例として、
・TRIM('ABC ') => 'ABC'
・TRIM(' ABC') => 'ABC'
・TRIM(' ABC ') => 'ABC'
・TRIM('ABC') => 'ABC'
となります。
基本的な考え方としては、上記のルールは分かればOKです。
ここで前回のSQLの等式と絡めて、初心者がつまずく点を解説しておきます。
以下の場合、戻り値はどうなるでしょうか。
・TRIM(' ') => ??
直観的には、「''」になりそうですね。
しかし、実際には前回解説しましたが、ORACLEに空文字「''」は無く、
すべてNULLになります。
つまり、
・TRIM(' ') => NULL
が正解です。
ここで、次のSQLの等式を考えてみましょう。
・TRIM(' ') = TRIM(' ')
この等式の結果は、TRUEでしょうか、FALSEしょうか。
左辺右辺がまったく同じ値なので、TRUEになりそうですね。
しかし、正解はFALSEです。
なぜかというと、先ほど解説しましたが、
・TRIM(' ')
は、NULLになります。
ORACLEでは空文字('')はすべてNULLだからですね。
したがって、
上記等式は、
・TRIM(' ') = TRIM(' ') ➡ '' = '' ➡ NULL = NULL
つまり、FALSEとなります。
「NULL = NULL」がFALSEになる理由は前回解説していますので、
気になる方はチェックしてみてください。
以上、解説でした。