数据库数据导入到Excel行数错乱
问题描述在工作过程中,有时会遇到这样的问题,写好sql查询语句在数据库中查询数据,看到行数(比如说是1000行),但是把查询结果复制到Excel里面,却发生了行列错位问题,而导致Excel里面的行数是超过1000行的,造成数据行数的不一致。问题重现:字段值包含char(10)换行符,复制字段值到Excel.根源:某些行列对应单元格包含了换行符,导致复制到Excel里面发生错位。解决方案:方案1(推
问题描述
在工作过程中,有时会遇到这样的问题,写好sql查询语句在数据库中查询数据,看到行数(比如说是1000行),但是把查询结果复制到Excel里面,却发生了行列错位问题,而导致Excel里面的行数是超过1000行的,造成数据行数的不一致。
问题重现:
字段值包含char(10)换行符,复制字段值到Excel.
根源:
某些行列对应单元格包含了换行符,导致复制到Excel里面发生错位。
解决方案:
方案1(推荐):把有问题的字段值,用英文双引号括起来,这样就能把字段值里面的换行符限制在正确的Excel单元格里面。
方案2:通过脚本把对应的字段值换行符去掉。
方案3:在sql server management 软件里面设置
https://www.sqlshack.com/sql-carriage-return-or-tab-in-sql-server-string/
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
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)