sql >> Databasteknik >  >> RDS >> Sqlserver

FÖR XML PATH(''):Escapende specialtecken

XML du får är korrekt. Det är XML , inte text, och läsbar som XML av en XML-tolkare. Specialtecken är korrekt escaped, som de ska vara. Vilken klientmodul du än har som förbrukar den XML bör den analysera den som XML, inte som text, och sedan kommer den att visas korrekt.

Uppdatering:

Om fallet inte är klart, allt du behöver göra i din fråga är att behandla XML som XML och text som text, inte blanda XML som text, dvs:

;WITH CodeValues AS
    (
    SELECT
        Number,SUBSTRING(@R,Number,1) AS R,ASCII(SUBSTRING(@U,Number,1)) AS UA
        FROM Numbers
        WHERE Number<=LEN(@R)
    )
, XmlValues AS (
SELECT
        t.RowID
            ,(SELECT
                  ''+c.R
                  FROM Numbers               n
                      INNER JOIN CodeValues  c ON ASCII(SUBSTRING(t.Unreadable,n.Number,1))=c.UA
                  WHERE n.Number<=LEN(t.Unreadable) 
                  FOR XML PATH(''), TYPE
             ) AS readable
        FROM @TestTable t)
SELECT x.RowId,
    x.readable.value('.', 'VARCHAR(8000)') as readable
    FROM XmlValues AS x



  1. Hur man visar Unicode-data med PHP

  2. Anrop till en medlemsfunktion execute() på boolean in

  3. Sekventiella genomströmningshastigheter och flöden

  4. 4 sätt att förhindra varningsöverbelastning med SQL Server-övervakning