2012-05-02 3 views
0

마지막 문자를 제거하기 위해 하위 문자열을 사용하고 있지만 무엇이 잘못되었는지는 확실치 않지만 입력 문자열이 길면 마지막 문자가 제거되지 않지만 짧은 문자열의 경우 마지막 문자는 제거되지 않습니다. 내가 SUBSTRING 사용하고 무엇을 다음 입니다 (@ XXX, 0, (렌 (@XXX을) -1))SQL Server의 하위 문자열이 긴 문자열에 대해 올바르게 wroking되지 않습니다.

렌 (@XXX는) 입력의 길이가 98015을 때 그것이 마지막 문자를 제거 있지만 작은 경우 제거하지 않습니다. 제한이 있습니까? 여기 무엇이 잘못 됐니?

+0

검색 문자열을 어떻게 선언합니까? 더블 바이트 문자 세트 데이터로 작업 할 수 있는지 궁금합니다. –

+0

어떤 데이터베이스를 사용하고 있습니까? SQL Server Management Studio를 사용하고 거기에 반환 된 문자열을보고있는 경우 최대 값은 약 43KB입니다. 마지막 문자가 대체되는지는 알 수 없습니다. –

답변

0

방금 ​​테스트 해본 결과 문제가 결과를 검토하는 방법과 관련 있다고 생각하게되었습니다. 쿼리 분석기에서 제대로 작동합니다 (MS SQL을 사용한다고 가정). 아래 스크립트는 100,000 자의 문자열 ('-'문자는 '0'숯)을 생성 한 다음 마지막 문자가 무엇인지 확인합니다.

declare @longstring varchar(max) 
declare @lastchar varchar(1) 
declare @i int 

set @longstring = '' 
set @lastchar = '' 
set @i = 1 
while @i <= 100000 
begin 
    set @longstring = @longstring + '-' 
    set @i = @i + 1 
end 
set @longstring = @longstring + '0' 
print 'Original long string: ' + @longstring 
set @lastchar = SUBSTRING(@longstring, LEN(@longstring), 1) 
print 'Last character before substring: ' + @lastchar 
--Last character before substring: 0 
set @longstring = SUBSTRING(@longstring, 0, len(@longstring) - 1) 
set @lastchar = SUBSTRING(@longstring, LEN(@longstring), 1) 
print 'Long string after substring: ' + @longstring 
print 'Last character after substring: ' + @lastchar 
--Last character after substring: - 
+0

코드를 제공해 주셔서 감사합니다. 이것은 제가 잘못 된 곳을 이해하는 데 도움이되었습니다. 문제는 managment studio 출력으로, 마지막 문자가 잘리지 않는다고 생각하는 모든 출력을 보여줍니다. – 09999

+0

여기에는 쿼리 분석기 동작에 대한 긴 스레드가 있습니다. http://stackoverflow.com/questions/952247/sql-server-truncation-and-8192-limitation. 어쨌든 긴 문자열을 사용하면 품질 보증에서 벗어날 필요가 있습니다. – itayw

관련 문제