检查 SQL Server 2005 的 XML 字段是否为空

9
我刚刚做了这件事:
Delete FROM MyTable WHERE ScopeValue = "" 
Delete FROM G_Scope WHERE ScopeValue is ''
Delete FROM G_Scope WHERE ScopeValue = empty
Delete FROM G_Scope WHERE ScopeValue is empty

我想删除所有包含xml字段(不可为空)且ScopeValue列中存在空条目(即零个字符)的行。
有人知道怎么做吗?
1个回答

13

试一下这个:

 DELETE FROM dbo.G_Scope WHERE ScopeValue IS NULL

如果 SQL Server 列不包含值,则该列将为 NULL

另一种可能性是 XML 不是 NULL,但其值为空字符串。对于这种情况,请使用以下命令:

-- The DATALENGTH of an empty XML column is 5
SELECT * FROM dbo.G_Scope WHERE DATALENGTH(ScopeValue) = 5

那是否展示了你感兴趣的行?


好奇怪啊,我好像之前做过这个。是 NULL……看起来我遇到了 SQL Studio Management 显示刷新的问题。我可以反复对表进行 select 操作,但 ScopeValues 中显示的字段都是空的。 - msfanboy
14
我相信一个空的 XML 变量的数据长度应该是 5:declare @x xml; set @x=''; select datalength(@x); select cast(@x as varbinary(max)) - nathan_jr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接