1

我有类似的问题,但没有得到满意的答案。我想将段落存储在 sql server 2005 的表中。我尝试了所有数据类型(nvarchar、varchar、文本等),但是当我复制内容时,它只存储第一行。帮我。

我正在使用 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();

    }

其中“数据”是多行内容。

4

3 回答 3

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

结果: 在此处输入图像描述

于 2012-06-13T12:37:51.223 回答
0

如果您将 SSMS 设置为以文本而不是网格(工具栏上的按钮)的形式返回值,您可以在文本中看到换行符,它们不会显示在网格视图中。

于 2012-06-13T12:51:05.053 回答
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;
     }
于 2012-06-13T12:52:38.437 回答