2011-01-25 19 views
9

比較這兩種報表SQL Server的東西 - 它應該與位置> 8000工作?

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

輸出

aaaaaaaaaaaaaaaaaaaaaaaa... 
NULL 

聯機叢書說start can be of type bigint.爲什麼這麼大的範圍,如果它甚至不會對8001工作?

如果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 Nice one!... – 2011-01-25 00:50:03

相關問題