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