我对此有类似的问题,但没有得到满意的答案。我想在sql server 2005中将段存储在表中。我尝试了所有数据类型(nvarchar,varchar,text等)但是当我复制内容时,它只存储第一行。帮助我。
我正在使用Sql Server Management Studio并直接将内容复制粘贴到表中。为了检索我使用此代码。
String query2 = String.Format("select data from try where roll=55");
SqlCommand cmd2 = new SqlCommand(query2, conn);
SqlDataReader reader2 = cmd2.ExecuteReader();
if (reader2.Read())
{
Label1.Text = reader2.GetValue(0).ToString();
}
其中'数据'是多行内容。
答案 0 :(得分:1)
我使用Sql Server 2008-R2进行了一些测试(因此2005年可能会有所不同):
insert into Test1 (Col1) VALUES('THIS
INSERTS
A
Multiline
String')
选择时,结果看起来没有换行符,但如果检查char(10)和char(13) - (CRLF)它们是否存在于字符串中......
select col1, REPLACE(REPLACE(col1,CHAR(10), 'X'),CHAR(13), 'Y') as LineBreaks from Test1
结果:
答案 1 :(得分:0)
如果将SSMS设置为以文本而不是网格(工具栏上的按钮)返回值,则可以在文本中看到换行符,它们不会显示在网格视图中。
答案 2 :(得分:0)
我有一个我帮助维护的Web应用程序,我们将数据存储在SQL Server 2008 R2中的多行文本框中 - 使用ADO.Net插入并使用ADO.net进行拉取乍一看似乎是“中断”段落“缺失。要恢复数据的可打印版本的换行符,我使用快速正则表达式将中断放回到Web应用程序中。用于执行此操作的方法如下:
public static string lineBreakCharsToHTMLBreak(string sourceString)
{
// This regex says look for any tab, carriage return or linefeed
Regex rexNewLine = new Regex("[\\t\\n\\r]");
sourceString = rexNewLine.Replace(sourceString, "<br>");
Regex rexDoppleBreak = new Regex("(<br>){2,}");
sourceString = rexDoppleBreak.Replace(sourceString, "<br>");
return sourceString;
}