我在一个十进制(10,2)字段中存储一个运行总计,并在处理项目时添加它。
更新foo set bar = bar +'3.15'
大约20%的时间发出警告“第4行的列'bar'数据被截断”
如果未引用更新值,则不会发出此警告。 是否应引用十进制值?
答案 0 :(得分:4)
当然不是。
整数和浮点数不是字符串,不应该引用。只有MySQL甚至允许它们周围的引号。
答案 1 :(得分:2)
您添加的值是否可能超出Decimal(10,2)
的限制?
E.g。
update foo set bar = bar + '3.149999'
会导致'数据截断'警告,因为该字段只能存储小数点右边的2位数字(而不是6位)。
答案 2 :(得分:1)
不,小数值按原样指定。如果引用它们,它将被解释为varchar。
答案 3 :(得分:0)
没有!引号仅用于字符串,如text,char,varchar等
答案 4 :(得分:0)
如果您没有引用NUMERIC / DECIMAL值,它们可能首先转换为FLOAT(失去精度),然后转换为您想要的类型。您还可以使用CAST关键字(MySQL)或:: cast(Postgres)。