下一个查询成功运行:
select top(100) * from PackageSessionNodes
where Cast(ContentInteractions as nvarchar) != ''
接下来给了我错误 目标字符串大小太小,无法表示XML实例
update PackageSessionNodes set ContentInteractions = '<contentinteractions />'
where Cast(ContentInteractions as nvarchar) = ''
ContentInteractions是一个xml列。没有定义滴滴涕。
如何解决第二个查询,以便使用''as xml?
获取这些记录我似乎SqlServer无法处理存储在xml列中的空值...但是你可以插入它们......那是怎么回事?
答案 0 :(得分:4)
问题在于您的CAST。如果未指定nvarchar的长度,则在CAST函数中默认为30个字符。那么你的陈述真正说的是
update PackageSessionNodes set ContentInteractions = '<contentinteractions />'
where Cast(ContentInteractions as nvarchar(30)) = ''
因此,如果ContentInteractions的XML内容被序列化为超过30个字符,则会出现此问题。