关于 double 类型字段 update 时加单引号的问题

2019-03-18 16:50:30 +08:00
 winnerczwx
今天在更新一个 double 字段的数据时发现无法插入预期的数值。数值比较大,预期要插入的是:124999999999999994927090557043795341436499511206056429958717376225837990368869303189504,也就是 1.24E86,但实际插入的是 1E65。

经过排查发现 mysql 报了一个警告:Warning: #1292 Truncated incorrect DECIMAL value : '999999999994927090557043795341436499511206056429958717376225837990368869303189504'

百度后发现好像没有跟我相同的情况,但大致意思是说值的类型不匹配被截断了。

解决方式:
之后尝试着给这个值加上单引号发现问题竟然解决了。

字段 a 是 double 当前值是 0
sql 语句: update table set a = a + '上面那个数值' where xxxx;


想请问在操作 double 类型字段的时候 加单引号和不加单引号有什么区别吗?
4123 次点击
所在节点    MySQL
2 条回复
xiaoxinshiwo
2019-03-18 20:25:43 +08:00
不是有 decimal 吗?
wowo243
2019-03-18 20:28:09 +08:00
隐式类型转换?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/545850

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX