2010-06-25 96 views
7

我只是这样做:检查SQL Server 2005中的XML字段为空

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列具有空条目的所有行意味着零个字符。

任何人都知道吗?

回答

10

试试这个:

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 

是否显示您感兴趣的行?

+0

多数民众赞成在奇怪......,要么我做到了这一点是NULL ...而且似乎我有一个SQL工作室管理显示刷新问题。 我可以一次又一次地在表上选择显示ScopeValues的空字段... – msfanboy 2010-06-25 15:08:07

+0

@msfanboy:用第二个选项更新我的答案... – 2010-06-25 16:02:18

+14

@marc_s我相信一个空的XML var的数据长度是5 :'声明@x xml; set @ x =''; select datalength(@x); select cast(@x as varbinary(max))' – 2012-07-08 07:04:49