Saltar al contenido

¿Cómo probar si XML = ” en el servidor SQL?

Solución:

Puede verificar NULL y ausencia de nodosexist método de xml escribe):

@ListNoteTypeCode is NULL OR @ListNoteTypeCode.exist('*') = 0

Su XPath puede ser más específico, si es necesario:

@ListNoteTypeCode is NULL OR @ListNoteTypeCode.exist('/BulletPoint/NoteTypeCode/text()') = 0

Otra forma de probar un parámetro, una variable o una columna XML vacíos es comprobar la DATALENGTH. Cualquier elemento XML vacío debe tener 5 bytes. Por ejemplo:

DECLARE @Test TABLE (XmlParam XML NULL);
INSERT INTO @Test ([XmlParam]) VALUES (NULL), (N''), (N'g');

SELECT t.[XmlParam],
       DATALENGTH(t.[XmlParam]) AS [DATALENGTH],
       CASE (ISNULL(DATALENGTH(t.[XmlParam]), 5))
          WHEN 5 THEN 'EMPTY'
          ELSE 'Not Empty'
       END AS [IsEmpty]
FROM   @Test t;

Devoluciones:

XmlParam     DATALENGTH    IsEmpty
--------     ----------    ---------
NULL         NULL          EMPTY
             5             EMPTY
g            9             Not Empty

Tenga en cuenta que usé ISNULL(DATALENGTH(t.[XmlParam]), 5) ya que debería estar bien para verificar un parámetro o variable. Si revisa una columna, podría ser mejor usar XmlColumn IS NULL OR DATALENGTH(XmlColumn) = 5.

Tenga en cuenta también que si bien es posible para que la representación interna de datos XML cambie entre versiones, he probado en SQL Server 2008 R2, 2012 y 2014 y el tamaño de un elemento XML vacío es consistentemente 5.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *