mysql導出長數字到excel避免顯示爲科學記數法 解決方法

常常遇到MYSQL導出長數字或純數字字符串(如身份證、卡券號、條碼、流水號等)到csv或excel文件,用excel打開會顯示爲科學記數法,甚至後幾位轉爲0。這是由Excel的特性決定的:Excel顯示11位以上的數字時,會自動轉化爲科學計數法,若是長度大於15位,15位之後數字還會轉成0。mysql

網上搜到的解決辦法是在該長數字前增長tab字符:
即:
CONCAT("\t",str)
其中 \t 爲製表符(即鍵盤上的Tab鍵)的轉義符sql

實踐時發現按此方法導出的文件打開後雖然顯示爲文本字符,但長度多了1,在字符前多了一個不可見空格(製表符),刪掉纔是原來的字符。函數

若是隻是展現、打印倒無妨,但若是須要後續引用該字符串(如用VLOOKUP匹配),由於前面多了一個不可見的空格,長度也多了一位,則可能會出錯。測試

後來想起excel輸入長數字的可在數字前輸入單引號」‘」強制轉爲文本,在 mysql輸出時也能夠試試,測試可用:
即:
CONCAT("'",str)
或者
CONCAT("\'",str)
另外注意需保存爲excel文件,即xls或xlsx文件,該數字即已強轉爲文本格式;如保存爲csv,用excel打開則顯示爲可見單引號+數字形式,緣由尚不明。excel

總結:code

1.若是隻須要導出展現、打印:可以使用CONCAT("\t",str)blog

2.若是須要後續處理,引用,最好使用CONCAT("'",str)或者CONCAT("\'",str),並導出爲EXCEL文件。字符串

 

解決辦法:在導出查詢時,使用MySQL中concat函數給長數字的字段加上單引號",",再點擊【導出嚮導】導出excel,excel打開就顯示正常的長數字了,class

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
相關文章
相關標籤/搜索