我将错误信息输入到我的数据库中的ErrorLog表中.我有一个实用程序类来执行此操作:
ErrorHandler.Error("Something has broken!!\n\nDescription");
Run Code Online (Sandbox Code Playgroud)
这很好用.但是,当我尝试访问此表时,似乎不再出现换行符.
如果我SELECT
在桌子上:
SELECT * from ErrorLog ORDER BY ErrorDate
Run Code Online (Sandbox Code Playgroud)
日志中没有换行符.这是预期的,因为单行中的换行符会破坏格式.但是,如果我复制数据,则换行符已丢失,数据全部在一行上.
当我放入换行符时,如何在查询结束时获得数据换行符?我不知道字符串在进入表时是否已被删除换行符,或者SQL Server Management Studio中的查看器是否已删除换行符.
放入错误消息的列的数据类型nvarchar(Max)
,如果这会产生影响.
编辑:出乎意料的是,Pendri的解决方案无效.
以下是字符串在传入SQL服务器之前的摘录:
POST /ipn/paymentResponse.ashx?installation=272&msgType=result HTTP/1.0\n\rContent-Length: 833\n\rContent-Type:
Run Code Online (Sandbox Code Playgroud)
当我从SQL Server Management Studio中的网格查看器中提取它时,这是相同的字符串:
POST /ipn/paymentResponse.ashx?installation=272&msgType=result HTTP/1.0 Content-Length: 833 Content-Type:
Run Code Online (Sandbox Code Playgroud)
换行的位置应该是双倍间距.
有任何想法吗?
n1k*_*0ss 38
无需替换字符串输入\输出,您只需选择正确的选项:
Tools -> Options...
> Query Results
> SQL Server
> Results to Grid
set "Retain CR\LF on copy or save" to true.
Run Code Online (Sandbox Code Playgroud)
别忘了重新启动管理工作室!
Tar*_*rwn 20
SSMS使用网格输出中的空格替换换行符.如果使用"打印"打印值(将转到"消息"选项卡),则如果它们与数据一起存储,则将在那里显示回车符.
例:
SELECT 'ABC' + CHAR(13) + CHAR(10) + 'DEF'
PRINT 'ABC' + CHAR(13) + CHAR(10) + 'DEF'
Run Code Online (Sandbox Code Playgroud)
第一个将显示在网格中的单个单元格中而没有中断,第二个将打印到消息窗格中.
打印值的快速简便方法是选择变量:
DECLARE @x varchar(100);
SELECT @x = 'ABC' + CHAR(13) + CHAR(10) + 'DEF';
PRINT @x;
Run Code Online (Sandbox Code Playgroud)
几年后更新。
如上所述这里,一个解决方案以保持在SSMS查看换行是将输出转换为XML:
SELECT * FROM (
SELECT * from ErrorLog ORDER BY ErrorDate
) AS [T(x)] FOR XML PATH
Run Code Online (Sandbox Code Playgroud)
幸运的是,如果您有 SSMS 2012,这不再是问题,因为会保留换行符。
归档时间: |
|
查看次数: |
14824 次 |
最近记录: |