mysql导出长数字到excel避免显⽰为科学记数法解决⽅法
经常遇到MYSQL导出长数字或纯数字字符串(如⾝份证、卡券号、条码、流⽔号等)到csv或excel⽂件,⽤excel打开会显⽰为科学记数法,甚⾄后⼏位转为0。这是由Excel的特性决定的:Excel显⽰11位以上的数字时,会⾃动转化为科学计数法,如果长度⼤于15位,15位以后数字还会转成0。
⽹上搜到的解决办法是在该长数字前增加tab字符:
即:
CONCAT("\t",str)
其中 \t 为制表符(即键盘上的Tab键)的转义符
实践时发现按此⽅法导出的⽂件打开后虽然显⽰为⽂本字符,但长度多了1,在字符前多了⼀个不可见空格(制表符),删掉才是原来的字符。
如果只是展⽰、打印倒⽆妨,但如果需要后续引⽤该字符串(如⽤VLOOKUP匹配),因为前⾯多了⼀个不可见的空格,长度也多了⼀位,则可能会出错。
后来想起excel输⼊长数字的可在数字前输⼊单引号”‘”强制转为⽂本,在 mysql输出时也可以试试,测试可⽤:
即:
CONCAT("'",str)
或者
CONCAT("\'",str)
另外注意需保存为excel⽂件,即xls或xlsx⽂件,该数字即已强转为⽂本格式;如保存为csv,⽤excel打开则显⽰为可见单引号+数字形式,原因尚不明。
总结:
1.如果只需要导出展⽰、打印:可使⽤CONCAT("\t",str)
excel数字转字符串函数
2.如果需要后续处理,引⽤,最好使⽤CONCAT("'",str)或者CONCAT("\'",str),并导出为EXCEL⽂件。
解决办法:在导出查询时,使⽤MySQL中concat函数给长数字的字段加上单引号",",再点击【导出向导】
导出excel,excel打开就显⽰正常的长数字了,
SELECT CONCAT("`",p_card_num),card_num FROM ppos_member_card_src WHERE p_card_num=002580986
SELECT CONCAT("\t",p_card_num),card_num FROM ppos_member_card_src WHERE p_card_num=002580986

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。