2011-01-25 6 views
9

は、これら2つの文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') 

の比較出力

aaaaaaaaaaaaaaaaaaaaaaaa... 
NULL 

オンラインブックは、それも8001のために動作しません場合start can be of type bigint.、なぜこのような大規模な範囲は述べていますか?

2005年、2008年、2008 R2とDenaliの動作が異なる場合は、各バージョンの実際の動作を知りたいと思います。

答えて

18

REPLICATE ('a', 10000)は8000個の文字列を生成します:string_expressionタイプ varchar型(最大)またはNVARCHAR(MAX)ではない場合

を、 REPLICATEは8000バイトで、戻り値 を切り捨てます。値 を8,000バイトより大きく返すには、 string_expressionを明示的に の適切な大きい値の データ型にキャストする必要があります。

お試しREPLICATE (cast('a' as varchar(max)), 10000)

+0

+1いいね! –

関連する問題