Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

FOR XML PATH(''):Uciekanie znaków specjalnych

Otrzymany kod XML jest poprawny. To jest XML , a nie tekst i czytelny jako XML przez parser XML. Znaki specjalne są odpowiednio zmieniane, tak jak powinny. Jakikolwiek moduł klienta, który posiadasz, który wykorzystuje ten XML, powinien przeanalizować go jako XML, a nie jako tekst, a następnie wyświetli się poprawnie.

Aktualizacja:

Jeśli nie jest jasne, wszystko, co musisz zrobić w swoim zapytaniu, to traktować XML jako XML, a tekst jako tekst, a nie mieszać XML jako tekst, 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaka jest różnica między VARCHAR i NVARCHAR w serwerze SQL - SQL Server / T-SQL Tutorial Część 32

  2. 4 sposoby konwersji liczby na procent w SQL Server (T-SQL)

  3. SQL:klauzula IF w klauzuli WHERE

  4. Korzystanie z PIVOT w SQL Server 2008

  5. 4 funkcje do sformatowania liczby do 2 miejsc dziesiętnych w SQL Server