有时我的SQL脚本包含一个或多个超长(有时甚至是愚蠢的长)字符串。通常,这些是VARBINARY
表示文件/程序集的文字/常量,但有时它们是文本。
字符串很长的主要问题是某些文本编辑器不能很好地处理它们。例如,我有一个VARBINARY
我在CREATE ASSEMBLY [AssemblyName] FROM 0x....
语句中使用的文字,而程序集本身的大小刚好超过1 MB,相当于文本文件中的刚好超过200万个字符,因为每个字节都需要用十六进制表示法表示两个字符(例如0x1F
= a 1
和an F
)。SQL Server Management Studio(SSMS)不能很好地处理此问题,并且在我尝试滚动浏览该行时挂起了几秒钟。实际上,某些版本(不确定是否还会发生这种情况)甚至在打开脚本时会显示关于长行的警告,该脚本的长度至少有一行。
第二个问题是,在没有启用自动换行功能的编辑器中使用或在线发布时,会使格式复杂化。这里的问题是,水平滚动条的滑块非常狭窄,即使将其稍微移动通常也会使非超长文本滚动到视线之外。
现在,T-SQL不再使用换行符甚至分号来终止命令(尽管从SQL Server 2005开始,分号是首选/推荐的分号)。因此,由于SQL Server知道如何解析每个语句以使其知道何时结束,因此似乎将长行拆分为仅由newline/ carriage-return+ 分隔的多行line-feed似乎不是不合理的。但这两种情况都不起作用。
PRINT 'Line1
Line2';
返回(在“消息”标签中):
Line1
Line2
这很有意义,因为换行符位于文字/常量内。但是,对于a执行此操作VARBINARY
也不起作用。
PRINT 0x1234
5678;
给我一个错误。