2010-06-25 5 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 будет NULL, если не содержит никакого значения.

Другая возможность заключается в том, что XML не является NULL, но содержит пустую строку в качестве ее значения. Для этого воспользуйтесь этой командой:

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

Означает ли это, какие строки вас интересуют?

+0

thats odd ..., либо я сделал это до NULL ... и похоже, что у меня проблема обновления дисплея для управления студийной панелью sql. Я могу сделать выбор на столе снова и снова, показывая его ScopeValues ​​с пустыми полями ... – msfanboy

+0

@msfanboy: обновил мой ответ со вторым параметром ... –

+14

@marc_s Я считаю, что длина пути для пустой XML var будет равна 5 : 'declare @x xml; set @ x = ''; выберите длину datalength (@x); select cast (@x as varbinary (max)) ' –

Смежные вопросы