sql数据库查询结果字段包含换行符导致复制到Excel发生错位问题的解决

问题描述:
在工作过程中,有时会遇到这样的问题,写好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发生错位问题、行数不一致问题所摸索到的解决办法,特此分享一下,希望对遇到同样问题的朋友有所帮助。如果帮助到了你,欢迎给我打赏支持一下哦。
【转载请注明博文来源:https://www.cnblogs.com/zhang502219048/p/10989296.html

原文地址:https://www.cnblogs.com/zhang502219048/p/10989296.html

时间: 2024-08-06 08:47:20

sql数据库查询结果字段包含换行符导致复制到Excel发生错位问题的解决的相关文章

sql server查询结果集字段包含换行符导致复制到excel错位问题

一.现象 直接复制查询结果到excel时,由于某些字符串字段包含换行符,导致原本10000行的数据,复制到excel后却超过了这个数值,甚是头疼 二.解决方案 把有问题的字段值,用英文双引号括起来,这样就能把字段值里面的换行符限制在正确的Excel单元格里面 --解决方案1:可以直接在字段加双引号处理,复制到Excel就不会错位,也不会显示多余的双引号.相当于把字段里的换行限制在单元格内 select '"'+ Name + '"' as Name, Remark from #t 原文

Teradata数据中包含换行符导致查询结果导出串行问题

Teradata数据中包含换行符导致查询结果导出串行问题 系统在日常运行期间,有部分数据是读取EXCEL导入到生产系统中的.这就导致了数据质量良莠不齐.有的Excel单元格中有换行符,数据导入后,再次查询时,就有可能出现导出结果数据串行的问题. 先来还原这一问题.(还未找到解决方案……T_T) 编写SQL,运行结果如下图: 复制Answer到UE中查看: 利用SQLA自带的导出功能,导出txt查看: 需注意的是,Create table with data 与 insert select运行结果

Error: unterminated string literal。通常原因是输出字符str中包含换行符导致的。

1 s = s.replace("\n\r", "<br>  "); 2 s = s.replace("\r\n", "<br>  ");//这才是正确的! 3 s= s.replace("\t", "    "); 4 s =s.replace(" ", " "); ///这个按需要看自己是否要加, 我的不需要 也就没加

SQL数据库查询方法

SQL数据库查询方法 简单查询: 一.投影 select * from 表名 select 列1,列2... from 表名 select distinct 列名 from 表名 二.筛选 select top 数字 列|* from 表名 (一)等值与不等值 select * from 表名 where 列名=值 select * from 表名 where 列名!=值 select * from 表名 where 列名>值 select * from 表名 where 列名<值 selec

通过RF数据库查询中文字段结果正常显示的转换方法

1.通过RF数据库查询中文字段结果格式:'\xba\xcb\xbc\xf5\xcd\xa8\xb9\xfd' 2.通过Decode Bytes To String进行gbk解码即可正常显示:

SQL替换制表、回车、换行符和首尾空格

SQL替换制表.回车.换行符和首尾空格 最近在批量修复数据的时候,需要利用excel导入大量数据.客户提供的数据是没有规范的,大部分数据行都有制表符.回车符.换货符,以及我需要将数据进行首位去重. 目前常用的方法就是使用Replace将对应的符号替换掉,可以定义一个函数,将他们合并在一起处理掉. 具体代码如下: --去除空格fn_trim create function fn_trim(@str nvarchar(max)) returns nvarchar(max) BEGIN --char(

Mysql5.7.11 安装 cacti0.8.8f ,在导入cacti.sql数据库时出现下记错误,导致数据库导入终止: ERROR 1067 (42000) at line 1847: Invalid default value for &#39;status_fail_date&#39;

解决方法:vim /etc/my.cnf 文件,加入 : sql-mode="NO_ENGINE_SUBSTITUTION" , Systemctl restart mysqld 进入mysql的之后可执行: select @@sql_mode 查询当前使用的sql_mode是什么 Mysql5.7.11 安装 cacti0.8.8f ,在导入cacti.sql数据库时出现下记错误,导致数据库导入终止: ERROR 1067 (42000) at line 1847: Invalid

NumberFormatException: Invalid int类型不匹配异常——使用SQL数据库查询语句select * from blacknumber order by _id desc limit ?,20;出现

异常:类型不匹配 05-06 08:12:38.151: E/AndroidRuntime(14904): java.lang.NumberFormatException: Invalid int: "18600000099" 05-06 08:12:38.151: E/AndroidRuntime(14904): at com.itheima.mobilesafe74.activity.BlackNumberActivity$Myadapter.getView(BlackNumber

【转】去掉Sqlite3 数据库中的前后回车换行符(newline)

原文: http://www.blogjava.net/pts/archive/2013/06/10/400... 时间: 2013-06-10 转自:http://www.ityuedu.com/article/26601034478/;jsessionid=546A853CF3B219B9A242C75E039CB846 最近使用rails 做了一个小小的小网站, 数据库用的是sqlite3, 数据库数据是从一个xml 文件中导入的, 有很多前导回车和末尾空行, 而页面显示的时候会自动把回车