Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server-XML-Abfrage mit nicht deklariertem Präfix

Ihr Beispiel ist in zweierlei Hinsicht ungültig:

  1. Es ist nicht erlaubt, ein Namespace-Präfix ohne eine entsprechende Namespace-Deklaration zu haben.
  2. Ihr Abschluss -Tags enthalten nicht den / überall...

Dies ist ein hässlicher Hack, aber Sie könnten Folgendes versuchen:

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];

Wenn Sie nicht alle Namespace-Präfixe im Voraus kennen, wird dies wirklich schwierig...