在MySQL中,整数字段的默认值为0.在插入期间,该字段的值为NULL,并插入NULL。我使用该字段的值进行一些算术操作,如加法,乘法,除法。插入NULL时会导致错误。如何解决这个问题?如果插入值为null,则DB不支持整数,十进制等字段的默认值(可能不适用于字符串类型,因为NULL对字符串有效)。如果不是,那么为数值类型设置NULL值是否正确?
由于某种原因当我有一个带有NOT NULL和DEFAULT VALUE为0的十进制字段时,插入失败并显示错误消息“第1行的列'Column_Name'的数据被截断”。
如果我删除了NOT NULL属性,插入将成为与警告相同的消息。
插入到该十进制字段的值是AVG()MySql函数
的结果真的很无能......
可能是什么原因?
答案 0 :(得分:4)
对于任何mysql列/类型,NULL都是正确的值。
您可以将列设置为NOT NULL,或者您需要使用脚本语言解析它,因此不会插入null。
答案 1 :(得分:3)
您可以将字段设置为NOT NULL
以完全避免此问题。如果不需要NULL
值,那么您应该这样做。当列为NOT NULL
时,将插入类型的默认值(0表示整数),而不是NULL
。
答案 2 :(得分:3)
创建表结构时,必须为表结构指定默认值“0”。或者您可以使用以下方式更改它:
ALTER TABLE `TableName` CHANGE `FieldName `FieldName` INT( 11 ) NULL DEFAULT '0'
希望这有帮助。
答案 3 :(得分:3)
要插入默认值,您不必为列指定任何值,甚至不指定NULL,因为NULL是特定值。
答案 4 :(得分:1)
如果计算没有问题你正在做,将列定义更改为NOT NULL DEFAULT 0然后你将始终有正确的整数(或十进制)。但是你需要记住将旧值从null更改为0.