原创博文,欢迎转载,转载时请务必附上博文链接,感谢您的尊重。
问题描述:
使用 MySQL 客户端工具导出 excel 数据,如果某个字段为纯数字,并且 length 过长,在导出的文件中,它就会以科学计数法表示。
如:使用 Navicat 将某表数据导出为 csv 文件时,其中 18 位的身份证号就会以科学计数法表示。
通过上面的图片示例,可以发现:
虽然数据库中身份证号已经是字符串类型,但是导出 excel 以后,过长的纯数字还是会被解析成科学计数法,没办法在 excel 中转义;如果是明确的字符串,再长也不会出现科学计数法,比如:以'X'结尾的身份证号码。
所以,如何告知MySQL 我们需要的是字符串,就是我们解决问题的思路。
解决方案:
在 MySQL 中,利用拼接函数CONCAT(var1,var2),有2类解决办法:
让 MySQL 自动识别它为字符串,方法是在需要处理的字段前面加【'】,例:CONCAT('\'', pres_iden_no)将字段转换成字符串,方法是在字段后面加【\t】(制表位),类似于Java字符串转换中的 + “” 操作,例:CONCAT(pres_iden_no, '\t')
我用【\t】(制表位)的方法举例,因为是我常用的方法:
SELECT id,prov_id,prov_name,coop_name,coop_address,CONCAT(pres_iden_no, '\t') as pres_iden_no,pres_name,pres_mobile FROM 'PRES_INFO';
导出 csv 格式结果展示:
完美解决!!