0

この SQL を SSMS (すべてのバージョン 2005-2014) で実行すると、最後の select ステートメントの Child 列に、最後の CHAR(13) と CHAR(10) が欠落しているデータがあります。これらの文字を切り捨てないように OPENXML または WITH 句で指定する方法はありますか?

DECLARE @IDoc INT
DECLARE @SerializedEntity XML

CREATE TABLE #BadResultTable(doc XML)

INSERT INTO #BadResultTable(doc)
    SELECT NewXML=
     (SELECT Child='Please dont strip my carriage return' + CHAR(13) + CHAR(10)
      FOR XML PATH('Parent'), TYPE, ELEMENTS XSINIL)

SET @SerializedEntity = (SELECT doc FROM #BadResultTable FOR XML PATH('Parent'), TYPE, ELEMENTS XSINIL)

EXEC sp_xml_preparedocument @IDoc OUTPUT, @SerializedEntity

/*PROBLEM HERE: The Child column is missing the training CHAR(13) and CHAR(10)*/
SELECT Child,ASCII(SUBSTRING(Child, LEN(Child), 1))
        FROM OPENXML(@IDoc, '/Parent', 2)
        WITH (Child NVARCHAR(MAX) '//Child/text()'
    )
4

1 に答える 1

1

OPENXML でそれを行う方法がわかりません。

XML 列のデータを既に取得しているのに、なぜ XQuery を使用しないのでしょうか? CR+LF は XML 列に存在します。それらを破壊するのはOPENXMLだけです。

于 2014-12-19T21:23:34.813 に答える