2012-01-04 2 views
1

nvarchar(max)의 열 (col1)이 있습니다.SQL Server 문자열 잘림

나는 나는 그것이 일어나는 이유를 전혀 몰라,

DECLARE @my_string NVARCHAR(max) 
set @my_string = N'test' 

UPDATE dbo.tab1 
SET col1 = @my_string + ISNULL(col1, N'') 

운을하지 않는다하려합니다. @marc_s

col1의 문자열 값이 250 자 뒤에 잘 렸습니다. 이 문제는 SQL Server 2005와 2008 모두에서 발생합니다.

+0

보고하는 행동이 표시되지 않습니다. 어떻게 그리고 왜 당신의 칼럼이 250 자로 잘린다고 생각합니까 ?? –

+1

테이블의 모든 트리거? –

+0

트리거가 없습니다. 이 코드는 SQL 프로 시저에 있습니다. – user1130456

답변

2

우선 -이 동작이보고되지 않습니다. 어떻게 그리고 왜 당신의 칼럼이 250 자로 잘린다고 생각합니까 ?? 도구를 사용하여 출력을 절단 할 수있는 데이터를 검사하고 있습니까?

당신은 칼럼의 길이를 확인할 수 있습니다 : 그것은 긴 정말에만 250 자

SELECT col1, LEN(col1) FROM dbo.tab1 

인가를 ???

또한 : 당신이 혼합하고 지저분한 결과로 이어질 수 (@my_string에서) VARCHARNVARCHAR (col1). 이것을 피하십시오!

다음 : NVARCHAR(MAX)을 원할 경우 다른 문자열을 해당 형식으로 변환해야합니다. 내 테스트에서, 나는이 작업을 수행 할 필요가 없습니다 않았다 - -

DECLARE @my_string NVARCHAR(200) 
set @my_string = N'test' 

UPDATE dbo.tab1 
SET col1 = CAST(@my_string AS NVARCHAR(MAX)) + ISNULL(col1, N'') 

내가 말했듯이하지만 어쩌면 그것은 당신의 경우에 작동합니다

이 시도?

+0

tab1에서 len (col1)을 선택했는데 250 개의 charecters가 있습니다. 또한 변경됨 – user1130456

0

SSMS에서 테스트합니까? 그렇다면 Query Results > SQL Server > Results to Grid-Maximum characters retrieved > Non XML data 옵션을 체크인하십시오. 250 또는 이와 비슷한 값이 있습니까?

+0

NO. 값은 65530입니다. SSMS와 Java 응용 프로그램 (jdbc)에서 불과 250을 봅니다 – user1130456

+0

두 번째 추측 : 테이블의 정의는 무엇입니까? 어떤 종류의 점검 제약이 있습니까? CHECK (DATALENGTH ([col1]) <= 250)와 같이 – BartekR

2

는 이동 메뉴 - 쿼리 -> 쿼리 옵션 -> 결과 -> 텍스트

옵션 Maximun number of characters displayed in each column 있습니다 및 광산 256 디폴트로했다.

일단 이것을 1000으로 설정하면 문제가 해결되었습니다.