sql >> Databáze >  >> RDS >> Sqlserver

FOR XML PATH(''):Escapování speciálních znaků

XML, které dostanete, je správné. Je to XML , nikoli text a je čitelný jako XML analyzátorem XML. Speciální postavy jsou správně escapovány, jak mají být. Ať už máte jakýkoli klientský modul, který tento XML spotřebovává, měl by jej analyzovat jako XML, nikoli jako text, a poté se zobrazí správně.

Aktualizace:

V případě, že to není jasné, vše, co musíte ve svém dotazu udělat, je považovat XML za XML a text za text, nikoli míchat XML jako text, tj.:

;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. „Závažná chyba interního připojení“ při provádění nativně kompilované uložené procedury v SQL Server 2019 (známá chyba)

  2. Oracle:Fulltextové vyhledávání s podmínkou

  3. Volání procedury Oracle s parametrem typu kolekce PL/SQL přes .NET

  4. Postgres:jak zaokrouhlíte časové razítko nahoru nebo dolů na nejbližší minutu?