2012-12-19 2 views
3

변환 할 XML을 varchar로 반환하는 쿼리가 있습니다. 내 쿼리는 XML의 93,643자를 반환합니다. 내 xml 결과를 varchar로 캐스팅하려고하면 결과 집합을 텍스트 편집기에 복사 할 때만 43,679자를 얻습니다. len (xmlString)을 할 때 93,643자를 얻습니다.FOR XML to Varchar (최대)

post에서 최대 varchar (최대)는 2^31 자, 1 바이트 = 1 문자까지 가질 수 있지만 데이터가 잘리지 않는 것으로 알고 있습니다.

XML 문자는 1 바이트 이상으로 계산됩니까? 내 XML 결과에서 모든 데이터를 선택할 수없는 이유는 무엇입니까?

CAST((SELECT COLUMNS FROM TABLE FOR XML PATH('Name'), TYPE) AS VARCHAR(MAX) 
+0

내 문제가 해결되지 않습니다. 나는 이미 그것들을 바 꾸었습니다. – sixshift04

+1

큰 문자열을 반환하거나 길이를 확인하려면 Management Studio 사용을 중지해야합니다. –

+0

이 게시물을 확인해야한다고 생각합니다. http : //stackoverflow.com/questions/11897950/how-do-you-view-all-text-from-an-ntext-or-nvarcharmax-in-ssms/11900246# 11900246 –

답변

0

이는 Managementstudio의 제한 사항입니다.
더 큰 테이블에서 testquery를 사용하면 43,679자를 설명합니다.
ADO를 통해 응용 프로그램의 동일한 쿼리 쿼리 267089 문자.

0

xml 데이터를 varchar (max)로 캐스팅해야하는 이유가 확실하지 않지만 모든 데이터를 복사하려는 경우 전혀 캐스팅하지 마십시오. 이 경우 결과 창에 클릭 가능한 값이있는 하나의 셀이 표시됩니다 (웹 링크처럼). 그것을 클릭하면 모든 데이터가 새 창에서 열리 며, 그러면 파일처럼 저장하거나 그냥 복사 할 수 있습니다. 희망이 도움이됩니다.

+1

그러나 XML 출력도 SSMS 내에서 64K로 제한됩니다. SSMS를 사용하여 길이의 유효성을 검사하려면 DATALENGTH()를 확인하십시오. 전체 문자열을 검증하려면 다른 것을 사용하십시오. –