2010-06-25 18 views
7

I właśnie to zrobił:Sprawdź, czy SQL Server 2005 XML pole jest puste

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 

chcę usunąć wszystkie wiersze z pola XML (pustych), gdzie kolumna ScopeValue ma pustych wpisów oznacza zerowe znaki.

Ktoś wie?

Odpowiedz

10

Spróbuj tego:

DELETE FROM dbo.G_Scope WHERE ScopeValue IS NULL 

SQL Server kolumna byłaby NULL jest, jeśli nie zawiera żadnej wartości.

Inną możliwością jest to, że XML nie ma wartości NULL, ale zawiera pusty łańcuch jako jego wartość. W tym celu użyj tego polecenia:

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

Czy to pokazuje wiersze, które Cię interesują?

+0

To dziwne ..., albo zrobiłem to przed NULL ... i wygląda na to, że mam problem z odświeżaniem wyświetlacza zarządzania sql. Mogę wielokrotnie zaznaczać na ekranie jej wartości ScopeValues ​​z pustymi polami ... – msfanboy

+0

@msfanboy: zaktualizowałem moją odpowiedź drugą opcją ... –

+14

@marc_s Wierzę, że długość danych pustego pliku XML var wynosiłaby 5 : 'declare @ x xml; set @ x = ''; wybierz długość danych (@x); wybierz rzutowanie (@x jako varbinary (max)) ' –

Powiązane problemy