1

最大 80,000 文字の多数の文字を含むxml_cacheという名前の列を持つテーブルがありました。列は として宣言されnvarchar(max)ます。

SQL Management Studio を使用してこの列のコンテンツを取得する際に問題が発生しました

SELECT [xml_cache], * FROM [dbo].[NZF_topic] AS nt
WHERE nt.id LIKE '%nzf_1609%'

この SQL を実行したとき、出力グリッドには、正確に 43680 番目の文字で切り捨てられたデータが含まれています。

出力グリッドを参照してください:スクリーンショット - 大きいサイズ:

出力が切り捨てられます

この列の内容全体を (スキーマを変更せずに) 取得するにはどうすればよいですか?

4

3 に答える 3

2

質問を投稿した後、この関連する質問を見ました 。回避策は、列を内側にラップすること<xml><![CDATA[ long content ]]</xml>です:

SELECT convert(xml,'<xml><![CDATA[' + cast(xml_cache as varchar(max)) + ']]></xml>'), 

* FROM [dbo].[NZF_topic] AS nt

WHERE nt.id LIKE '%nzf_1609%' 

次に、単純な検索と置換 ( &lt;--> <&gt;--> >) を使用して、適切な出力を取得できます。それは完璧な解決策ではありませんが、MS 製品も完璧ではありません。

于 2014-03-10T11:05:02.743 に答える