我有一个类型为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到文本的显式转换
有解决方法吗?
答案 0 :(得分:11)
转换为varchar(max)
应该可以正常工作。你可能在别处有问题。如果您尝试插入/更新数据类型为varchar(8000)
的列。
答案 1 :(得分:2)
您遇到的问题与尝试将xml转换为varchar有关。在尝试将比你小得多的XML字符串转换为NVARCHAR之前,我遇到过类似的问题。从CONVERT切换到CAST应该可以解决您的问题。只要尺寸合适,只需将其设置为MAX即可。
答案 2 :(得分:1)
我从未有过这种特殊需要,但我会尝试的另一种方式是
SUBSTRING(CAST(Content AS VARCHAR), 1, 8000)