zoukankan      html  css  js  c++  java
  • SQL Server解惑——为什么你拼接的SQL语句换行符失效了?

     

    在SQL Server数据库的维护管理当中,我们经常要用SQL语句生成一些维护操作的SQL语句,例如,我们要批量的修改数据库的恢复模式。如下所示:

     

    --===========================================================================================================================
    --        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

     

    clip_image001

     

    另外,当你导出查询结果时,如果你不想因为这些换行符或回车符导致CSV或Excel格式混乱的话,你也可以取消这个选项。其实这个是一个很简单的事情,但是确实有一些同学对这些完全不了解。所以在这里简单的介绍一下。

    扫描上面二维码关注我
    如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
  • 相关阅读:
    微信WeixinJSBridge API
    微信内置浏览器的JsAPI(WeixinJSBridge续)[转载]
    一套简单可依赖的Javascript库
    一款轻量级移动web开发框架
    传说中的WeixinJSBridge和微信rest接口
    点击网页分享按钮,触发微信分享功能
    Metronic前端模板
    AdminLTE前端模板
    Nginx如何配置静态文件直接访问
    架构设计流程
  • 原文地址:https://www.cnblogs.com/kerrycode/p/15685605.html
Copyright © 2011-2022 走看看