sql >> Database >  >> RDS >> Sqlserver

SQL Server XML-query met niet-aangegeven prefix

Uw voorbeeld is op twee manieren ongeldig:

  1. Het is niet toegestaan ​​om een ​​naamruimtevoorvoegsel te hebben zonder een bijbehorende naamruimtedeclaratie.
  2. Uw afsluiting tags bevatten niet de / overal...

Dit is een lelijke hack, maar je zou dit kunnen proberen:

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

Als je niet alle voorvoegsels van de naamruimte van tevoren weet, wordt dit erg lastig...




  1. String tot nu toe in Oracle met milliseconden

  2. Automatische verhoging in liquibase

  3. Het eerste teken DISTINCT van een veld retourneren (MySQL)

  4. Beperk SQL tot de som van de waarde van de rij