0
これを行う方法に関する多数の記事を読んでいますが、これを動作させることはできません。私はnvarchar(max)
列のテーブルを持っており、数十ページ分のテキストを含む可能性があります。私は、これを段落を分割するために、各キャリッジリターンが入力される別々の行に分割する必要があります。SQL Server 2012分割された行が別の行に分割される
私は、以下の機能が見つかりました:私は区切り文字としてスペースを使用して、簡単なダミーのテーブルの上にこれをテストしてきたし、それが動作
CREATE FUNCTION [dbo].[udf-Str-Parse]
(@String varchar(max), @Delimiter varchar(10))
Returns Table
As
Return
(Select
RetSeq = Row_Number() over (Order By (Select null)),
RetVal = LTrim(RTrim(B.i.value('(./text())[1]', 'varchar(max)')))
From
(Select x = Cast('<x>'+ Replace(@String, @Delimiter, '</x><x>') + '</x>' as xml).query('.')) as A
Cross Apply
x.nodes('x') AS B(i)
);
を、私は次のコードを使用して、テキストと私の実際のテーブルの上にこれをしようとすると、クエリ。
Select
A.AssignmentID, Notes = B.RetVal
From
dbo.Assignments A
Cross Apply
[dbo].[udf-Str-Parse](A.TitleNotes, char(13)) B
Where
AssignmentID = 20
私は、次のメッセージが出ます:
メッセージ9411、レベル16、状態1、行1
XMLの解析:行2、文字127、セミコロンは私が
を期待します私の単純なテーブルの例のようなスペースを含めて、char(13)
以外の異なるデリミタを使用しようとしましたが、セミコロンを期待してエラーが発生しました。
誰かが私が間違っているのを見ていますか?
はあなたの実際のデータは、任意の組み込み '' <' or '>文字が含まれていますか?あるいは、さらに悪いことに、組み込みXMLのような構文(例えば、 ' ')? –
Forty3
入力されたテキストは、コードの一種ではなく、タイトルドキュメントに関する多くのコメントを含んでいます。私はそれらを見ることに驚かれるだろうが、いくつかの< or >文字が存在する可能性があります。 – user2638607
上記のコードで使用されている特定のAssigmentID = 20のテキストがチェックされていることを確認しましたが、何もありません。 – user2638607