NULLと同じように値がないことを表すのに空文字('')やスペース(' ')
これはRDBMSによってどの程度、動作に違いがあるのか?
■【Oracle】
Oracleの場合、主要なデータ型のカラムに対し、空文字、スペースを挿入すると実際には以下の表のような値が登録される。
データ型 | 空文字 | スペース |
---|---|---|
CHAR(固定長文字列) | NULL | 定義長分のスペース |
VARCHAR2(可変長文字列) | NULL | スペース |
NUMBER(数値) | NULL | エラー |
DATE(日時) | NULL | エラー |
Oracleは空文字をNULLにしてしまうようだ。
■【SQL Server】
データ型 | 空文字 | スペース |
---|---|---|
CHAR(固定長文字列) | 空文字 | 空文字 |
VARCHAR(可変長文字列) | 空文字 | 空文字 |
INT(数値) | 0 | 0 |
DATETIME(日時) | 1900/01/01 00:00:00 | 1900/01/01 00:00:00 |
NULL≠空文字。
数値型や日時型に空文字が設定された場合、
Oracleのようにエラーにせず、勝手にそのデータ型の”値なし”の値を格納するようだ
気が利いてるのか?嫌がらせなのか?
ただ、どちらも、NULL、空文字、スペースを混同して使用すると誤った操作を誘発する可能性が高くなるのは間違いないでしょう。