-
SQL Server解惑——为什么你拼接的SQL语句换行符失效了?
在SQL Server数据库的维护管理当中,我们经常要用SQL语句生成一些维护操作的SQL语句,例如,我们要批量的修改数据库的恢复模式。如下所示:
我们为了生成输出的SQL脚本的格式漂亮一点,不至于挤到一行,可能经常要使用换行符之类的,如上所示,我们在拼接SQL语句的时候,我们会使用CHAR(10),有时候也会使用CHAR(9)、CHAR(10)、CHAR(13)这些特殊函数,
CHAR(9) \t 水平制表符
CHAR(10) \r 回车
CHAR(13) \n 换行
但是在一些环境下面,你会发现类似上面SQL可能会“工作”地很正常,但是在一些环境下面,你将拼接生成的SQL拷贝到SSMS的会话窗口或文本文件时,你会发现回车或换行符都失效了,这到底是怎么一回事呢?
其实这个还真跟SSM的环境设置有关,如果你从网格拷贝的时候,换行或回车失效了,那么你应该在SSMS的菜单中选项:“选项”-> “查询结果”-> “SQL Server”-> “以网格显示结果”中,勾选“复制或保存时保留CR/LF(E)”选项,如果SSMS是英文环境的话,那么对应的选项为“Retain CR/LF on copy or save”
另外,当你导出查询结果时,如果你不想因为这些换行符或回车符导致CSV或Excel格式混乱的话,你也可以取消这个选项。其实这个是一个很简单的事情,但是确实有一些同学对这些完全不了解。所以在这里简单的介绍一下。
--===========================================================================================================================
-- ScriptName : change_recovery_model_to_full.sql
-- Author : Kerry
-- CreateDate : 2015-12-18
-- Description : 将用户数据库的恢复模式从简单模式切换为完整模式。
/******************************************************************************************************************
Parameters : 参数说明
********************************************************************************************************************
********************************************************************************************************************
Modified Date Modified User Version Modified Reason
********************************************************************************************************************
2015-12-18 Kerry V01.00.00 新建该脚本。
*******************************************************************************************************************
注意事项 :
SP_EXECUTESQL 执行的脚本里面不能使用GO语句;如果需要执行的话,上面字符串必须去掉GO。
*******************************************************************************************************************/
--===========================================================================================================================
DECLARE @SQL_TEXT NVARCHAR(MAX) ='';
SELECT @SQL_TEXT +=
'USE master;' + CHAR(10)
+ 'GO' +CHAR(10)
+ 'ALTER DATABASE ' + QUOTENAME(name) + ' SET RECOVERY FULL WITH NO_WAIT;' + CHAR(10)
+ 'GO' +CHAR(10)
FROM sys.databases WITH(NOLOCK)
WHERE recovery_model_desc='SIMPLE'
AND state=0 --0表示ONLINE
AND name NOT IN ('master', 'msdb', 'model','tempdb', 'distribution','ReportServer','ReportServerTempDB')
ORDER BY database_id;
PRINT @SQL_TEXT;
我们为了生成输出的SQL脚本的格式漂亮一点,不至于挤到一行,可能经常要使用换行符之类的,如上所示,我们在拼接SQL语句的时候,我们会使用CHAR(10),有时候也会使用CHAR(9)、CHAR(10)、CHAR(13)这些特殊函数,
CHAR(9) \t 水平制表符
CHAR(10) \r 回车
CHAR(13) \n 换行
但是在一些环境下面,你会发现类似上面SQL可能会“工作”地很正常,但是在一些环境下面,你将拼接生成的SQL拷贝到SSMS的会话窗口或文本文件时,你会发现回车或换行符都失效了,这到底是怎么一回事呢?
其实这个还真跟SSM的环境设置有关,如果你从网格拷贝的时候,换行或回车失效了,那么你应该在SSMS的菜单中选项:“选项”-> “查询结果”-> “SQL Server”-> “以网格显示结果”中,勾选“复制或保存时保留CR/LF(E)”选项,如果SSMS是英文环境的话,那么对应的选项为“Retain CR/LF on copy or save”
另外,当你导出查询结果时,如果你不想因为这些换行符或回车符导致CSV或Excel格式混乱的话,你也可以取消这个选项。其实这个是一个很简单的事情,但是确实有一些同学对这些完全不了解。所以在这里简单的介绍一下。
出 处:https://www.cnblogs.com/DeveloperSharp/
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式