sql >> データベース >  >> RDS >> Oracle

Oracle 9iが空の文字列をNULLとして扱うのはなぜですか?

    答えは、Oracleは非常に古いということだと思います。

    SQL標準が存在する前の昔、Oracleは、VARCHARの文字列を空にするという設計上の決定を下しました。 / VARCHAR2 列はNULLでした また、NULLの意味は1つしかありませんでした(プロンプトが表示されなかったデータ、回答は存在するがユーザーにはわからないデータ、回答がないデータなどを区別するリレーショナル理論家がいます)。 NULLの意味を構成します 。

    SQL標準が登場し、NULLに同意するまでに 空の文字列は別個のエンティティであり、2つが同等であると想定するコードを持っているOracleユーザーがすでに存在していました。そのため、Oracleには基本的に、既存のコードを壊したり、SQL標準に違反したり、潜在的に多数のクエリの機能を変更するような初期化パラメータを導入したりするオプションが残されていました。 SQL標準(IMHO)に違反することは、これら3つのオプションの中で最も混乱が少ないものでした。

    Oracleは、VARCHARが データ型は、SQL標準に準拠するように将来のリリースで変更される予定です(そのため、誰もがVARCHAR2を使用します Oracleでは、そのデータ型の動作は今後も同じであることが保証されているためです。



    1. Ubuntu 8.04でMySQLリレーショナルデータベースを使用する(Hardy)

    2. MySQL Workbench

    3. PrintStatementを使用してVARCHAR(MAX)を印刷するにはどうすればよいですか?

    4. 2022年に練習しなければならないSQLクエリインタビューの質問トップ30