2010-06-25 23 views
7

que acabo de hacer esto:Comprobar si el campo XML de SQL Server 2005 está vacía

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 

quiero borrar todas las filas con el campo xml (no anulable) donde la columna ScopeValue tiene entradas vacías significa cero caracteres.

¿Alguien sabe?

Respuesta

10

Prueba esto: la columna

DELETE FROM dbo.G_Scope WHERE ScopeValue IS NULL 

El SQL Server sería NULL es decir, si no contiene ningún valor.

La otra posibilidad sería que el XML no es NULO, pero contiene una cadena vacía como su valor. Para eso, use este comando:

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

¿Eso le muestra las filas que le interesan?

+0

eso es extraño ..., o hice esto antes de que sea NULL ... y parece que tengo un problema de actualización de la pantalla de administración de estudio sql. Puedo hacer selects en la tabla una y otra vez mostrando ScopeValues ​​con campos vacíos ... – msfanboy

+0

@msfanboy: actualicé mi respuesta con una segunda opción ... –

+14

@marc_s Creo que la longitud de datos de una var XML vacía sería 5 : 'declare @x xml; conjunto @ x = ''; seleccionar longitud de datos (@x); seleccionar elenco (@x como varbinary (max)) ' –

Cuestiones relacionadas