2010-06-25 42 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