检查空的xml列

时间:2010-01-08 13:04:11

标签: sql sql-server database

下一个查询成功运行:

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列中的空值...但是你可以插入它们......那是怎么回事?

1 个答案:

答案 0 :(得分:4)

问题在于您的CAST。如果未指定nvarchar的长度,则在CAST函数中默认为30个字符。那么你的陈述真正说的是

update PackageSessionNodes set ContentInteractions = '<contentinteractions />'
where Cast(ContentInteractions as nvarchar(30)) = ''

因此,如果ContentInteractions的XML内容被序列化为超过30个字符,则会出现此问题。