2

在 MySQL 中,整数字段的默认值为 0。在插入期间,该字段的值为 NULL,并且 NULL 被插入。我使用该字段的值进行一些算术运算,例如加法、乘法、除法。这会导致错误,因为插入了 NULL。如何解决这个问题?如果它们的插入值为空,数据库不支持整数、小数等字段的默认值(可能不适用于字符串类型,因为 NULL 对字符串有效)。如果不是,那么对 Numeric 类型使用 NULL 值是否正确?

由于某种原因,当我有一个 NOT NULL 和 DEFAULT VALUE 为 0 的十进制字段时,插入失败并显示错误消息“第 1 行的列 'Column_Name' 的数据被截断”。

如果我删除 NOT NULL 属性,则插入成功,消息与警告相同。

插入该十进制字段的值是 AVG() MySql 函数的结果

真是一头雾水……

可能是什么原因?

4

5 回答 5

7

要插入默认值,您不必为该列指定任何值,甚至不能指定 NULL,因为 NULL 是一个特定值。

于 2009-09-21T09:52:18.450 回答
5

NULL 是任何 mysql 列/类型的正确值。

您可以将该列设置为 NOT NULL,或者您需要使用脚本语言对其进行解析,因此不会插入 null。

于 2009-09-21T08:54:01.390 回答
3

您可以设置一个字段NOT NULL来完全避免这个问题。如果一个NULL值是不需要的,那是你应该做的。当列是NOT NULL时,插入类型的默认值(整数为 0)而不是NULL

于 2009-09-21T08:54:40.463 回答
3

您必须在创建表结构时为其指定默认值“0”。或者您可以使用以下方法更改它:

ALTER TABLE `TableName` CHANGE `FieldName `FieldName` INT( 11 ) NULL DEFAULT '0'

希望这可以帮助。

于 2009-09-21T08:56:29.047 回答
1

如果您的计算没有问题,请将列定义更改为 NOT NULL DEFAULT 0,那么您将始终拥有正确的整数(或小数)。但是您需要记住将旧值从 null 更改为 0。

于 2009-09-21T08:56:56.033 回答