MySQL中PostgreSQL float8等价类型及数值插入精度问题求解
解决MySQL插入带逗号数值的问题
问题出在你输入的12,3456.78里的逗号——MySQL的float、double、decimal这些数值类型都不识别这种带逗号的格式,解析时会在逗号处截断,只保留前面的12,和你用什么数值类型没关系。PostgreSQL的float8本质就是双精度类型,和MySQL的double没区别,你之前在PG里能正常插入,肯定是提前处理了逗号格式。
不用改数据库,按下面两种方式处理就行:
- 直接在SQL里处理:用
REPLACE()函数去掉字符串里的逗号,再插入。示例语句:
INSERT INTO 你的表名(你的列名) VALUES (REPLACE('12,3456.78', ',', ''));
执行后,12,3456.78会被转换成123456.78,就能正确存入数值列了。
- 在应用层处理:如果是从代码里插入数据,先在代码里把字符串的逗号去掉,再把处理后的数值传给SQL语句,这种方式更安全,还能避免潜在的SQL注入风险。
内容的提问来源于stack exchange,提问作者Mega
相关产品推荐
相关产品推荐

