首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server数据库中的NULL与默认值

SQL Server数据库中的NULL与默认值
EN

Stack Overflow用户
提问于 2009-01-23 22:08:05
回答 6查看 9K关注 0票数 5

在数据库中插入行时,使用缺省值(例如空字符串)是否有任何含义。使用空值的问题是,在应用程序中使用数据时必须检查它们,而默认值可以更容易地处理。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-01-23 22:13:01

数据库中NULL的含义应保留为'unknown‘,它不等同于空。因此,只要您使用的默认值反映了底层数据的性质(即它不是“未知”的),我实际上建议您使用默认值。

但是,您的里程可能会有所不同。这取决于您的应用程序。如果它以不同的方式处理未知值,那么一定要使用它:)

票数 7
EN

Stack Overflow用户

发布于 2009-01-23 22:53:54

我不同意使用默认值。null的目的是表明您没有任何信息。空字符串并不意味着这一点,它是一个值。此外,如果您开始禁止字符串上的空值,那么您需要考虑其他数据类型。数字和日期很难有一个表示“我没有这个字段的值”的值。如果您犯了在varchar字段中存储数字或日期的错误,那么当您需要将它们转换为日期或等效的数字以对它们进行数学处理时,使用空字符串而不是null可能会导致查询不起作用(不建议将日期和数字数据存储为字符串,只是认识到您可能已经有一些,这种方案可能会导致查询方式的问题)。如果您不允许除这些字段之外的所有字段都为空值,那么在查询这些字段时,您将会犯很多错误,因为您将不习惯检查空值,并且更有可能忘记这样做。你也可以引起一系列新的查询问题。考虑一下:

代码语言:javascript
复制
select count(myfield), myfield2 from mytable group by myfield2

如果您使用null或空字符串来存储值,而您不知道哪一个值,这将产生不同的结果。

票数 7
EN

Stack Overflow用户

发布于 2009-01-23 22:12:38

我相信,你会遇到的主要错误是逻辑错误。

字符串很简单,但整数就不同了。考虑一个工资列。如果默认值为0,这可能表示与NULL不同的值。NULL表示该员工未通过工资单,而0表示由于某种原因仍需处理该员工。

空值也可以在外键上使用,但在FK上使用默认值似乎不是一个好主意。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/474806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档