NULL【错失机遇:MSSQL 拒绝 NULL 的存储】(mssql 不允许保存)

2023-04-21 19:04:50 不允许 机遇 错失

现代社会中,大部分关系型数据库都可以存储 NULL,为了节省存储空间,NULL可以表示未知、不存在或其他原因导致值得无法填充或者不存在。但是,令人恐慌的是,MSSQL数据库会拒绝存储NULL。

虽然这一拒绝NULL的传统存在了很长时间,但仍然存在误解。MSSQL拒绝NULL的实际原因是因为它会把包含NULL的所有记录当做空记录,形成混乱的记录结构,所以它拒绝保存NULL值。

另一方面,空值可以被视为无法使用的垃圾,用来表达值的缺失或者空白,而另一种许多数据库都支持的选项是用空字符串“”。有时,空字符串也被视为NULL,但它非常不同,因为它有值,而且有一些关键的操作(如比较和关联)可以基于它来实现,而NULL则无法实现。

建议使用其他替代品来实现NULL功能,比如默认值、空字符串或者其他类型。例如,在数字字段中可以使用0作为默认值,而在字符串字段中可以使用空字符串“”或者“N/A”作为默认值。示例如下:

(1)在存储字段中使用默认值

CREATE TABLE [MyTable] ([ID] int NOT NULL DEFAULT 0, [Name] varchar(100) NOT NULL DEFAULT “N/A”)

(2)在更新字段中使用零值

UPDATE MyTable SET ID = 0 WHERE ID IS NULL

(3)在更新字段中使用空字符串

UPDATE MyTable SET Name = ” WHERE Name IS NULL

总而言之,尽管MSSQL拒绝NULL的实际原因是为了避免结果混乱,但它也可以被替代,以达到良好的结果。

相关文章