【问题标题】:SQL Server DataType of TEXT does not maintain formattingTEXT 的 SQL Server DataType 不维护格式
【发布时间】:2012-11-18 23:53:55
【问题描述】:

我必须在 SQL Server 2005 中使用数据类型为 TEXT 的列来存储我需要用换行符和制表符格式化的字符串。

在调用存储过程之前,我添加了一个断点来查看我在 VS2010 的文本可视化器中发送的文本,并且所有格式都是我想要的,但是当我进入单元格时数据库,并复制出数据,格式丢失。据我所见,每次字符串中出现换行符或制表符时,文本数据类型都会用空格替换它。对于换行,我使用 vbNewline,对于标签,我使用 vbTab 或 Xml.Formatting.Indented

值得注意的是,我不能更改列的数据类型,因为它只是一个我必须用于特定目的的表。

关于使用 at 数据类型的文本在数据库中正确格式化此内容的任何建议?

示例:

表示表的 SQL 表脚本:

CREATE TABLE [dbo].[FooLog](
    [FooID] [int] IDENTITY(1,1) NOT NULL,
    [FooInfo] [text] NULL )

字符串生成器代码:

Dim sb As New StringBuilder()

sb.AppendFormat("{0}{1}", "Some text", vbNewLine)
sb.AppendLine("Some foo bar data")
sb.AppendLine(String.Format("{0}data{1}{0}some more data", vbTab, vbNewLine))

Dim stringToStoreInFooInfo As String = sb.ToString()

存储在数据库中:

db.AddInParameter(cmd, "FooInfo", SqlDbType.Text, stringToStoreInFooInfo)

我现在没有用代码读回它...我正在使用 Ctrl-C 将其复制出单元格或右键单击“复制”

【问题讨论】:

  • 我建议你创建一个小例子然后发布它。只是一个带有 ID 列和 TEXT 字段的表格,以及用于填充和读取它的简单代码。
  • 您写道“当我转到数据库中的单元格并复制数据时,格式丢失了”。如何“去单元格”,如何复制数据?
  • @Diego 我去 MSSQLMS,查询记录,突出显示单元格,然后使用 Ctrl + C 或右键单击“复制”
  • @wakurth 我就是这么想的。由于 SSMS 而不是 SQL Server,格式可能会丢失。您应该从您自己的应用程序中查询数据,您会看到它已正确存储。
  • 很高兴知道@Diego ...谢谢。

标签: .net sql-server text string-formatting types


【解决方案1】:

它确实保留了格式,您通过复制 SSMS 单元格会丢失格式。

一旦你有代码将文本拉回,你应该仍然有适当的格式。

例如,如果您在 SSMS 中运行以下命令,则会丢失换行符。我认为它会为其他空白字符切换空格。

Select
'
This
    is
some fomatted
text
'

【讨论】:

  • 有趣。不幸的是,如果不围绕它编写程序 UI,我无法从数据库中取回它。它用于记录异常,现在,我们只需手动将它们从 sql 中拉出。我将自己花一点时间将其包装在 UI 中。谢谢。
【解决方案2】:

您可以启用“在复制或保存时保留 CR/FL”选项。

工具-->选项-->查询结果-->SQL Server-->结果到网格

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多