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. データベース呼び出しを減らしてWebサイトのパフォーマンスを向上させる

    2. MySQLのカレンダーイベントとリマインダーのデータベースを設計するためのガイド

    3. MySQLをDebian8にインストールする方法

    4. UNION、EXCEPT、またはINTERSECTを使用している場合のPostgreSQLの「エラー:テーブルのFROM句エントリがありません」を修正しました