sql數據庫查詢結果字段包含換行符導致復制到Excel發生錯位問題的解決


問題描述:
在工作過程中,有時會遇到這樣的問題,寫好sql查詢語句在數據庫中查詢數據,看到行數(比如說是1000行),但是把查詢結果復制到Excel里面,卻發生了行列錯位問題,而導致Excel里面的行數是超過1000行的,造成數據行數的不一致。

問題重現:
字段值包含char(10)換行符,復制字段值到Excel.

根源:
某些行列對應單元格包含了換行符,導致復制到Excel里面發生錯位。

解決方案:
方案1(推薦):把有問題的字段值,用英文雙引號括起來,這樣就能把字段值里面的換行符限制在正確的Excel單元格里面。
方案2:通過腳本把對應的字段值換行符去掉。

腳本:

/*
    腳本來源:https://www.cnblogs.com/zhang502219048/p/10989296.html
*/
create table #t
(
    Name nvarchar(50),
    Remark nvarchar(50)
)

--問題重現條件:單元格里面包含換行符
insert into #t
values ('A1' + char(10) + 'B1', '行1'), ('A2B2', '行2')

--問題重現結果:把sql查詢結果復制到Excel會錯位
select Name, Remark
from #t

--解決方案1:可以直接在字段加雙引號處理,復制到Excel就不會錯位,也不會顯示多余的雙引號。相當於把字段里的換行限制在單元格內
select '"'+ Name + '"' as Name, Remark
from #t

--解決方案2:可以把換行符去掉
select replace(replace(Name, char(13), ''), char(10), '') as Name, Remark
from #t

drop table #t

運行結果:

查詢結果復制到Excel的效果:

后記:
以上是本人在日常工作中處理數據庫查詢結果復制到Excel發生錯位問題、行數不一致問題所摸索到的解決辦法,特此分享一下,希望對遇到同樣問題的朋友有所幫助。如果幫助到了你,歡迎給我打賞支持一下哦。
【轉載請注明博文來源:https://www.cnblogs.com/zhang502219048/p/10989296.html


免責聲明!

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



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