2010-06-25 7 views
7

Je viens de faire ceci:Vérifiez si le champ XML SQL Server 2005 est vide

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 

Je veux supprimer toutes les lignes avec le champ XML (non annulable) où la colonne ScopeValue a des entrées vides signifie zéro caractères.

Quelqu'un sait?

Répondre

10

Essayez ceci:

DELETE FROM dbo.G_Scope WHERE ScopeValue IS NULL 

La colonne SQL Server serait NULL est si ne contient aucune valeur.

L'autre possibilité serait que le XML ne soit pas NULL, mais contient une chaîne vide comme valeur. Pour cela, utilisez cette commande:

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

Est-ce que cela vous montre les lignes qui vous intéressent?

+0

thats impair ..., soit je l'ai fait avant est NULL ... et il semble que j'ai un problème de rafraîchissement d'affichage de gestion de studio sql. Je peux faire des sélections sur la table encore et encore son montrant ScopeValues ​​avec des champs vides ... – msfanboy

+0

@ msfanboy: mis à jour ma réponse avec une deuxième option ... –

+14

@marc_s Je crois que la longueur de la base d'un XML var vide serait 5 : 'declare @x xml; set @ x = ''; sélectionnez la longueur de données (@x); select cast (@x comme varbinary (max)) ' –

Questions connexes