TEXT的SQL Server数据类型不保持格式化。

问题描述 投票:0回答:2

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

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

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

有什么建议可以让这个数据类型为文本的表在数据库中正确格式化?

举例说明。

SQL表脚本表示该表:

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

Stringbuilder代码:

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中:

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

我现在还没有用代码读回来... ... 我是用Ctrl-C或右键 "复制 "从单元格中复制出来的。

.net sql-server text string-formatting types
2个回答
4
投票

它确实能很好地保留格式,你通过从SSMS单元格中复制出来,失去了格式。

一旦你有代码将文本拉回来,你应该仍然有格式化的地方。

例如,如果你在SSMS中运行以下内容,你将失去换行符。我想它会用空格来切换其他空白字符。

Select
'
This
    is
some fomatted
text
'

0
投票

你可以启用 "Retain CRFL on copy or save "选项。

Tools--> Options--> Query Result--> SQL Server--> Result To Grid(结果到网格)。enter image description here

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.