MySQL中浮点型传输字符问题的详细解决方案
本文主要介绍mysql浮点数到字符类型时遇到的一个问题,并与大家分享,供大家参考学习。这里没有什么要说的。让我们详细介绍一下。
一个问题的描述
今天,我遇到了一个数据刷的需求,它是修改产品的重量(字段类型是浮动的)。修改后的产品的重量,我们需要记录在日志表(字段类型为varchar)。表结构如下:
临时电刷数据表:
创建表(` temp_170830 `
` ID ` int(10)符号的非空auto_increment评论主键ID,
` goods_sn ` varchar(255)不为空的默认的评论产品代码,
` goods_weight `浮(9,4)不为空的默认'0.0000'comment产品重量,
` actual_weight `浮(9,4)不为空的默认'0.0000'comment实际重量,
` new_actual_weight `浮(9,4)不为空的默认'0.0000'comment新实际重量,
` create_user ` varchar(30)不为空的默认评论的创造者,
主键(id),
关键` idx_goods_sn `(` goods_sn `)
InnoDB引擎= = 8192)auto_increment默认的字符集utf8评论= 'temporary刷量表;
日志表:
创建表(` log_weight `
` ID ` int(10)符号的非空auto_increment评论主键ID,
` goods_sn ` varchar(50)不为空的默认的评论产品代码,
` which_col ` varchar(100)不为空的默认的评论改进的领域,
` old_value ` varchar(50)不为空的默认'0.00'comment更新预值,
` new_value ` varchar(50)不为空的默认'0.00'comment '更新后的价值,
` update_user ` varchar(100)不为空的默认评论的创造者,
` update_time `日期不为空的默认current_timestamp更新current_timestamp,
` wh_update_time `时间零违约current_timestamp更新current_timestamp评论记录修改时间,
主键(id),
关键` idx_goods_sn `(` goods_sn `),
关键` idx_update_user `(` update_user `),
关键` wh_update_time `(` wh_update_time `)
InnoDB引擎= = 14601620)auto_increment默认的字符集utf8评论= 'weight修改日志;
如上表所示,我需要刷actual_weight的temp_170830表new_actual_weight领域进入old_value的log_weight表new_value领域,分别。SQL语句如下所示:
插入log_weight(goods_sn,which_col,old_value,new_value,update_user)
选择goods_sn,'actual_weight ',actual_weight,new_actual_weight,create_user从temp_170830;
我以为我已经在这里完成工作了。毕竟,我只是插入了一些日志记录。后来,为了简单地检查,我发现数据有问题。
临时表数据捕获:
日志表数据捕获:
对比后可以发现,日志数据更多的是没有道理的。小数点的位置,突然冒出来,我想以后,可能原来的浮点数据也不例外,变成varchar当放回那些了,暂时不确定,补充后续的决心,然后找到一个临时varchar Concat方法,调整如下:
插入log_weight(goods_sn,which_col,old_value,new_value,update_user)
选择goods_sn,'actual_weight,concat(actual_weight,' '),concat(new_actual_weight,),create_user从temp_170830;
成功解决日志记录问题。
摘要如下:
1当记录价格和权重数字字段时,尽量不要使用浮点类型!!!很多浮点型(如浮点型)不能被判断为相等!!!)最好的方法是使用整数。当你想显示十进制数时,把它读出来并把它分成相应的数字。比如99.98元,你应该存9998元。当您阅读时,使用9998/100显示它。
2当把varchar在浮动,你应该首先将浮动到concat函数varchar,然后将其存储在varchar字段。
以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。如果有任何疑问,您可以留言交流,谢谢您的支持。