Oracle 对空字符串的独特处理:是 NULL 还是非 NULL?
Oracle 9i 将空字符串 ('' ) 等同于 NULL 的做法,一直让许多开发者感到困惑。为什么一个旨在存储字符的数据类型会将一个有效的字符串等同于数据缺失?
要理解这种特殊性,我们必须深入研究 Oracle 的发展历史。在 SQL 标准出现之前,Oracle 将 VARCHAR/VARCHAR2 列定义为将空字符串视为 NULL 值。这种设计源于 Oracle 对 NULL 的独特解释,它涵盖了所有形式的数据缺失。
当 SQL 标准出现并确立了 NULL 和空字符串之间的区别时,Oracle 面临两难境地。更改现有 VARCHAR 列的行为将会破坏旧代码,而违反标准则会与行业实践产生差异。为了最大限度地减少中断,Oracle 做出了有争议的决定,保留了原来的定义。
Oracle 承认这种做法偏离了标准,但也为未来可能与标准保持一致的更改留下了余地。因此,开发者明智的做法是,为了代码的未来兼容性,更倾向于使用 VARCHAR2 而不是 VARCHAR。关于 Oracle 为什么保持这种不寻常的行为,有很多猜测,但其原因仍然是一个官方谜团,也许是根植于在不断变化的标准环境中保持向后兼容性的需要。
以上是Oracle 是否将空字符串视为 NULL?的详细内容。更多信息请关注PHP中文网其他相关文章!