MySQL使用OUTFILE导出时保留V_x列小数0的问题咨询
解决MySQL INTO OUTFILE导出时保留Double类型末尾.0的问题
这个问题本质是MySQL对数值类型的导出逻辑导致的:当DOUBLE类型值的小数部分为0时,导出时会自动省略.0,因为数值上10000和10000.0是等价的。要强制保留一位小数,我们需要把数值转换为固定格式的字符串,下面提供两种可靠的解决方案:
方案1:使用FORMAT函数格式化(推荐)
FORMAT()函数可以指定保留的小数位数,同时我们用REPLACE()去掉默认添加的千分位逗号,完美匹配你的需求:
SELECT ID, I_R_A, I_NO, REPLACE(FORMAT(V_x, 1), ',', '') AS V_x INTO OUTFILE "/home/user/out.txt" FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM DATA_0;
FORMAT(V_x, 1)会将数值格式化为保留1位小数的字符串(比如10000.0),但默认会添加千分位逗号(比如10,000.0)REPLACE(..., ',', '')负责去掉千分位逗号,得到纯数字加一位小数的格式
方案2:使用CASE语句判断小数部分
如果需要更灵活的控制(比如仅当小数部分为0时添加.0),可以用CASE结合MOD()函数判断:
SELECT ID, I_R_A, I_NO, CASE WHEN MOD(V_x, 1) = 0 THEN CONCAT(V_x, '.0') ELSE V_x END AS V_x INTO OUTFILE "/home/user/out.txt" FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM DATA_0;
MOD(V_x, 1)会获取数值的小数部分,若结果为0则说明是整数(比如10000.0的小数部分是0)- 此时用
CONCAT()拼接.0,否则直接输出原数值
两种方案都能让你导出的V_x列始终保留.0结尾,比如10000.0、60.0等格式。
内容的提问来源于stack exchange,提问作者Phillip
相关产品推荐
相关产品推荐

