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)

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM