如何将超过8000个字符的XML字段转换为字符串?

时间:2012-07-17 06:46:15

标签: sql-server xml sql-server-2008

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

我想将此列转换为varchar

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

然而,每当我尝试CONVERT(varchar(8000), Content)时,我都会收到错误:

  

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

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

  

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

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

  

给'varchar'类型的大小(20000)超过了任何数据类型允许的最大值(8000)

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

  

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

有解决方法吗?

3 个答案:

答案 0 :(得分:11)

转换为varchar(max)应该可以正常工作。你可能在别处有问题。如果您尝试插入/更新数据类型为varchar(8000)的列。

,则会出现该错误

答案 1 :(得分:2)

您遇到的问题与尝试将xml转换为varchar有关。在尝试将比你小得多的XML字符串转换为NVARCHAR之前,我遇到过类似的问题。从CONVERT切换到CAST应该可以解决您的问题。只要尺寸合适,只需将其设置为MAX即可。

答案 2 :(得分:1)

我从未有过这种特殊需要,但我会尝试的另一种方式是

SUBSTRING(CAST(Content AS VARCHAR), 1, 8000)