答えは、Oracleは非常に古いということだと思います。
SQL標準が存在する前の昔、Oracleは、VARCHAR
の文字列を空にするという設計上の決定を下しました。 / VARCHAR2
列はNULL
でした また、NULLの意味は1つしかありませんでした(プロンプトが表示されなかったデータ、回答は存在するがユーザーにはわからないデータ、回答がないデータなどを区別するリレーショナル理論家がいます)。 NULL
の意味を構成します 。
SQL標準が登場し、NULL
に同意するまでに 空の文字列は別個のエンティティであり、2つが同等であると想定するコードを持っているOracleユーザーがすでに存在していました。そのため、Oracleには基本的に、既存のコードを壊したり、SQL標準に違反したり、潜在的に多数のクエリの機能を変更するような初期化パラメータを導入したりするオプションが残されていました。 SQL標準(IMHO)に違反することは、これら3つのオプションの中で最も混乱が少ないものでした。
Oracleは、VARCHAR
が データ型は、SQL標準に準拠するように将来のリリースで変更される予定です(そのため、誰もがVARCHAR2
を使用します Oracleでは、そのデータ型の動作は今後も同じであることが保証されているためです。