什么是空?
根据 ANSI SQL-92 规范,null 既不是空字符串(对于字符或日期时间数据类型),也不是零值(对于数字数据类型)。为了确保统
一处理所有空值,ANSI SQL-92 规范规定所有数据类型的空值必须相同。当属性没有要存储给定记录的数据时,它由 SQL 值 NULL
表示。
Oracle vs PostgreSQL vs SQL Server 中的 NULL 和 Empty String
Oracle 将 NULL 和 n 个空字符串都视为 NULL。PostgreSQL 将 NULL 视为 NULL,将空字符串视为空字符串。与 PostgreSQL 类似,
SQL Server 也将 NULL 视为 NULL,将空字符串视为空字符串。
Oracle 需要一个字节来存储 NULL。然而,PostgreSQL 和 SQL Server 都不需要任何空间来存储 NULL。
对 NULL 和空字符串的唯一约束
在 Oracle 中,存在唯一约束的列可以存储任意数量的 NULL 条目和空字符串。
但是,当列上存在唯一约束时,SQL Server 只允许将一个 NULL 和一个空字符串插入到列中。
在 PostgreSQL 中,允许插入多个类似于 Oracle 的 NULL 实体。与 SQL Server 类似,PostgreSQL 只允许在该列上存在唯一约束时
使用空字符串。
立即订阅我们的时事通讯,以获取有关此类有用信息的通知。
评论