【问题标题】:Retaining Decimal 0 during mysql outfile在 mysql outfile 期间保留小数 0
【发布时间】:2018-01-29 13:32:15
【问题描述】:

所以我有一个像这样的表结构,

CREATE TABLE DATA_0 (ID BIGINT(15), I_R_A int(10) DEFAULT NULL, I_NO varchar(200) DEFAULT NULL, V_x double(10,1) DEFAULT NULL);

有了这样的样本数据,

ID,I_R_A,I_NO,V_x
1,10000,9895987650, 10000.0
2,60,2424, 60.0
3,70,34, 70.0
4,80,34245, 80.0

执行以下输出文件查询时-

SELECT ID,I_R_A,I_NO,V_x INTO OUTFILE "/home/user/out.txt" FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' FROM DATA_0;

我的输出文件看起来像这样-

ID,I_R_A,I_NO,V_x
1,10000,9895987650, 10000
2,60,2424, 60
3,70,34, 70
4,80,34245, 80

如您所见,十进制 0 已从 V_x 删除。我怎样才能保留这个0

【问题讨论】:

  • 你不能“保留”甚至一开始就不存在的东西。实数在小数点后没有尾随零。如果你仍然想要一个,那么你必须自己实现,编写一个适当的“转换”函数在那个地方使用,将你的数值转换为你想要的 string 格式。

标签: mysql into-outfile


【解决方案1】:

使用FORMAT函数

SELECT ID,I_R_A,I_NO, REPLACE(FORMAT(V_x, 1), ',', '')
INTO OUTFILE "/home/user/out.txt" 
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' 
FROM DATA_0;

【讨论】:

  • FORMAT 将在 10000 中包含一个逗号 (,) 来分隔千位,如果这不是您想要的,您需要使用 REPLACE(FORMAT(V_x, 1), ',', '') 来代替。
  • @Edward 很乐意为您提供帮助 :)
猜你喜欢
  • 2015-05-01
  • 2012-07-05
  • 2012-03-28
  • 1970-01-01
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 2013-06-10
  • 2020-11-18
相关资源
最近更新 更多