MS SQL Server 2008R2 : How to retrieve the content of a large text column?

ぐ巨炮叔叔 提交于 2019-12-11 08:48:50

问题


I had a table with a column named xml_cache, containing large number of characters up to 80,000. The column is declared as nvarchar(max).

I had problem retrieving the content of this column using SQL Management Studio

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

Wwhen I ran this SQL, the output grid contain truncated data, exactly at the 43680-th characters.

See the output grid: screenshot - large size:

How do I retrieve the whole content of this column (without modifying the schema)?


回答1:


After I post the question, then I saw this related question. The work around is to wrap the column inside <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%' 

Then with use some simple search & replace (&lt; --> <, &gt; --> >) , we can get the proper output. Well it's not the perfect solution but hey, MS products ain't perfect either.




回答2:


First there area limitation at the Query Analyzer tool. Click right mouse button over the query

You ill find two fields:

Execution -> General -> SET TEXTSIZE

and

Results -> Grid - > Max characters retrieved

Anyway maybe you cannot get that large text using query analyzer. It's happen due to query analyzer is a development tool and don't make sense retrieving a big text no human can read.




回答3:


This was a limitation of SQL Server Management Studio, but in SSMS 18.2 this limit has been increased. By default it truncates to 65535 characters (instead of 43679), but you can configure it in Tools / Options / Query Results / SQL Server / Results to Grid / Non-XML data to show up to 2097152 characters.

See https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-2017#new-in-this-release-ssms-182



来源:https://stackoverflow.com/questions/22298174/ms-sql-server-2008r2-how-to-retrieve-the-content-of-a-large-text-column

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!