数据库存储SQL语句后复制丢失换行,如何保留原格式?
解决SQL语句存储后复制丢失换行符的问题
问题根源
你当前插入数据时仅用空格拼接字符串,并未将换行符存入数据库字段,因此读取复制时自然丢失原格式。要保留换行,需从存储源头和读取复制操作两个环节处理:
一、从存储源头解决(推荐)
确保插入时将换行符写入字段,有两种简便方式:
1. 显式添加换行符
SQL Server中,Windows风格换行符为CHAR(13)+CHAR(10)(CR+LF),Linux风格为CHAR(10),修改插入语句如下:
create table toerase_SQL ( SqlSource varchar(max) ) insert into toerase_SQL select 'select '+CHAR(13)+CHAR(10)+ 'VendorId, '+CHAR(13)+CHAR(10)+ 'VendorName, '+CHAR(13)+CHAR(10)+ 'VendorAddress, '+CHAR(13)+CHAR(10)+ 'VendorCity, '+CHAR(13)+CHAR(10)+ 'VendorState, '+CHAR(13)+CHAR(10)+ 'VendorZip '+CHAR(13)+CHAR(10)+ 'from Vendor ' select * from toerase_SQL
2. 使用多行字符串字面量(SQL Server 2016+ 更便捷)
直接在SSMS中编写多行字符串,用单引号包裹,SSMS会自动保留换行符:
insert into toerase_SQL select ' select VendorId, VendorName, VendorAddress, VendorCity, VendorState, VendorZip from Vendor '
注:若字段类型为
nvarchar(max),需在字符串前加N(N'...')避免乱码,纯SQL语句用varchar(max)即可。
二、读取复制时保留格式
若字段已存储换行符,复制时需注意SSMS操作方式:
- 不要直接选中单元格复制,右键点击目标单元格,选择复制值(Copy Value),粘贴到文本编辑器即可保留换行。
- 或切换查询结果模式:点击顶部菜单
查询 -> 结果到 -> 结果到文本,执行查询后直接复制结果文本,格式会完整保留。
三、修复已存储的无格式SQL
若已有大量无换行的SQL存于表中,可通过字符串替换临时修复(仅适用于类似示例的规整格式):
UPDATE toerase_SQL SET SqlSource = REPLACE( REPLACE(SqlSource, ', ', ','+CHAR(13)+CHAR(10)), ' from ', CHAR(13)+CHAR(10)+' from ' )
此方法仅针对规律格式的SQL,复杂SQL建议手动调整,核心还是从存储源头规范格式。
内容的提问来源于stack exchange,提问作者fdkgfosfskjdlsjdlkfsf
相关产品推荐
相关产品推荐

