6

我有一个 SQL Server 类型的列,XML其中包含一些超过 8000 个字符的记录。

我想将此列转换为varchar.

我不关心截断(前 8000 个字符很好)。

但是,每当我尝试时,都会CONVERT(varchar(8000), Content)出现错误:

目标字符串太小,无法表示 XML 实例

当我尝试时CONVERT(varchar(MAX), Content)出现错误:

字符串或二进制数据将被截断

当我尝试时CONVERT(varchar(20000), Content)出现错误:

赋予类型“varchar”的大小 (20000) 超过任何数据类型允许的最大值 (8000)

当我尝试时CONVERT(text, Content)出现错误:

不允许从数据类型 xml 到文本的显式转换

有解决方法吗?

4

3 回答 3

11

Cast tovarchar(max)应该可以正常工作。你可能在其他地方有问题。如果您尝试使用 datatype 插入/更新列,则会收到该错误varchar(8000)

于 2012-07-17T07:33:55.240 回答
2

您遇到的问题与尝试将 xml 转换为 varchar 有关。在尝试将比您的小得多的 XML 字符串转换为 NVARCHAR 之前,我遇到了类似的问题。从 CONVERT 切换到 CAST 应该可以解决您的问题。就尺寸而言,您最好将其设置为 MAX。

于 2012-07-17T17:09:20.740 回答
0

我从来没有这种特殊需要,但我会尝试的另一种方法是

SUBSTRING(CAST(Content AS VARCHAR), 1, 8000)
于 2012-07-17T07:05:55.363 回答