null
由于一个奇怪的请求,如果没有价值,我无法放入数据库。我想知道我可以在存储过程中放置什么而不是null
.
例如:
insert into blah (blah1) values (null)
“blah1”是否有类似空或空的东西,而不是使用null
?
null
由于一个奇怪的请求,如果没有价值,我无法放入数据库。我想知道我可以在存储过程中放置什么而不是null
.
例如:
insert into blah (blah1) values (null)
“blah1”是否有类似空或空的东西,而不是使用null
?
我会拒绝这个奇怪的要求。这正是NULL
SQL 中的用途,用于表示列中缺失或不适用的值。
请求者是否对 SQL 逻辑感到悲伤NULL
?
编辑: 好的,我已经阅读了您的回复,其中包含有关此工作分配的更多详细信息(顺便说一句,通常您应该编辑原始问题,而不是在答案中发布更多信息)。
您必须将所有列声明为NOT NULL
并在该列的数据类型的域中指定一个特殊值以表示“无值”。选择的适当值可能因具体情况而异,即零在person_age
列中可能没有任何意义,但在列中可能有意义items_in_stock
。
您应该记录每列的无值值。但我想他们也不相信文档。:-(
取决于列的数据类型。对于数字(整数等),它可以是零 (0),但如果是 varchar,那么它可以是一个空字符串 ("")。
我同意其他回应,即 NULL 最适合于此,因为它超越了所有表示没有值的数据类型。因此,零和空字符串可能作为一种解决方法/破解,但它们基本上仍然是实际值本身,可能具有除“不是值”之外的业务领域含义。
(如果只有 SQL 语言支持“不适用”(N/A)值类型,它可以作为 NULL 的替代品......)
对于您存储的任何内容,null 是否都是有效值?
编辑:但是,是的,我同意其他答案,即尝试更改要求可能比尝试解决问题更好。
如果您使用的是 varchar 或等效字段,请使用空字符串。
如果您使用的是诸如 int 之类的数字字段,那么您将不得不强制用户输入数据,否则请提供一个表示 NULL 的值。
我不羡慕你的处境。
NULL 作为分配值(例如插入到列中)和 NULL 作为 SQL 工件(对于 OUTER JOIN 的缺失记录中的字段)之间存在差异。这对这些用户来说可能是一个陌生的概念。很多人使用Access 或任何数据库,只是为了维护单表列表。)如果天真的用户更愿意使用替代方法来分配,我不会感到惊讶。虽然令人反感,但它应该可以正常工作。只要让他们使用他们想要的任何东西。
不使用 NULL 值的要求有一定的有效性。当 NULL 值位于将包含在 JOIN 或 WHERE 子句中的字段或将被聚合的字段中时,它们可能会引起很多麻烦。
一些 SQL 实现(例如 MSSQL)不允许 NULLable 字段包含在索引中。
当评估 NULL 是否相等时,MSSQL 尤其会以意想不到的方式表现。当我们搜索最新的记录时,PaymentDue 字段中的 NULL 值是否与零相同?如果我们在表格中有名字而某人没有中间名怎么办。可以想象空字符串或 NULL 都可以存储,但是我们如何获得没有中间名的人的完整列表呢?
一般来说,我更喜欢避免使用 NULL 值。如果您不能使用数字(包括零)或字符串(包括前面提到的空字符串)来表示要存储的内容,那么您可能应该仔细查看您要存储的内容。也许您正试图在一个字段中传达多个数据。