sql >> Base de Datos >  >> RDS >> Sqlserver

Consulta SQL Server Xml con prefijo no declarado

Su ejemplo no es válido de dos maneras:

  1. No está permitido tener un prefijo de espacio de nombres sin una declaración de espacio de nombres correspondiente.
  2. Su cierre las etiquetas no incluyen el / en todas partes...

Este es un truco feo, pero puedes probar esto:

DECLARE @Params XML
SET @Params = REPLACE('<filter>
                      <ns0:from>2016-09-19</ns0:from>
                      <ns0:to>2017-01-01</ns0:to>
               </filter>','ns0:','');
SELECT @Params.value('(/*:filter/*:from)[1]', 'date') AS [from];

Si no conoce todos los prefijos de espacio de nombres de antemano, esto se volverá realmente complicado...