2011-01-25 2 views
9

이 두 문SQL Server STUFF - 8000보다 큰 위치에서 작동합니까?

select stuff(convert(varchar(max),replicate('a', 10000)),8001,1,'b') 
select stuff(convert(varchar(max),replicate('a', 10000)),8000,1,'b') 

출력 등의 넓은 범위는 심지어 8001 작동하지 않을 경우 왜

aaaaaaaaaaaaaaaaaaaaaaaa... 
NULL 

온라인 설명서 start can be of type bigint.을 말한다 비교?

2005 년, 2008 년, 2008 R2와 Denali간에 동작이 다른 경우 각 버전의 실제 동작을 알고 싶습니다.

답변

18

REPLICATE ('a', 10000)는 8000 개 문자 문자열을 생성합니다 : string_expression 유형 VARCHAR (최대) 또는 NVARCHAR (최대)이 아닌 경우

을 REPLICATE는 8,000 바이트에서 반환 값 을 자릅니다. 8,000 바이트보다 큰 값을 반환하려면 string_expression이 명시 적으로 데이터 형식의 적절한 큰 값인으로 캐스팅되어야합니다.

시도 REPLICATE (cast('a' as varchar(max)), 10000).

+0

+1 좋은 ...! –

관련 문제