sql数据库查询结果字段包含换行符导致复制到Excel发生错位问题的解决
- 作者: 土豆土豆土豆我叫土豆
- 来源: 51数据库
- 2021-08-29
问题描述:
在工作过程中,有时会遇到这样的问题,写好sql查询语句在数据库中查询数据,看到行数(比如说是1000行),但是把查询结果复制到excel里面,却发生了行列错位问题,而导致excel里面的行数是超过1000行的,造成数据行数的不一致。
问题重现:
字段值包含char(10)换行符,复制字段值到excel.
根源:
某些行列对应单元格包含了换行符,导致复制到excel里面发生错位。
解决方案:
方案1(推荐):把有问题的字段值,用英文双引号括起来,这样就能把字段值里面的换行符限制在正确的excel单元格里面。
方案2:通过脚本把对应的字段值换行符去掉。
脚本:
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发生错位问题、行数不一致问题所摸索到的解决办法,特此分享一下,希望对遇到同样问题的朋友有所帮助。如果帮助到了你,欢迎给我打赏支持一下哦。
【转载请注明博文来源:】
推荐阅读
- SQLite数据库操作:原生操作,GreenDao操作讲解
- 数据库SQL实战题:获取员工其当前的薪水比其manager当前薪水还高的相关信息(教程)
- SQLSERVER查询区分大小写的写法分析
- SQL学习总结之SQL的分类介绍
- 阶梯到高级T-SQL 1级:高级T-SQL介绍交叉连接
- 高级T-SQL级别1的Stairway:使用CROSS JOIN引入高级T-SQL分析
- 什么是SQL隔离级别?四个SQL隔离级别定义介绍
- Sql递归介绍之用with实现递归查询
- SQLSERVER查询时日期格式化的实例讲解
- 数据库SQL实战:从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略(题解)
热点文章
SQLite数据库操作:原生操作,GreenDao操作讲解
18
数据库SQL实战题:获取员工其当前的薪水比其manager当前薪水还高的相关信息(教程)
4
SQLSERVER查询区分大小写的写法分析
36
SQL学习总结之SQL的分类介绍
6
阶梯到高级T-SQL 1级:高级T-SQL介绍交叉连接
4
高级T-SQL级别1的Stairway:使用CROSS JOIN引入高级T-SQL分析
4
什么是SQL隔离级别?四个SQL隔离级别定义介绍
2
Sql递归介绍之用with实现递归查询
6
SQLSERVER查询时日期格式化的实例讲解
4
数据库SQL实战:从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略(题解)
7