Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

ЗА XML PATH(''):Екраниране на специални символи

XML, който получавате, е правилен. Това е XML , не текст и може да се чете като XML от XML анализатор. Специалните знаци са правилно екранирани, както трябва да бъдат. Какъвто и клиентски модул, който имате, който консумира, XML трябва да го анализира като XML, а не като текст, и след това ще се покаже правилно.

Актуализация:

В случай, че не е ясно, всичко, което трябва да направите във вашата заявка, е да третирате XML като XML и текста като текст, а не да смесвате XML като текст, т.е.:

;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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server Регулярни изрази в T-SQL

  2. Показатели за производителност на SQL сървъра, за да останете пред играта

  3. SQL Server Log Shipping &Disaster Recovery Installation and Configuration -1

  4. Как да преименувате база данни на SQL сървър с помощта на T-SQL

  5. Агрегирана функция в заявка за актуализиране на SQL?