1

32,759 文字以降の結果を切り捨てようとしています。これは Excel の文字制限であり、結果が貼り付けられる場所であるためです。

これまでに試した2つの方法:

CONVERT(varchar(max), substring(comment,1,37259)) as [Comment]
CONVERT(varchar(max), ( substring(comment,1,8000) + substring(comment,8001,16000)...)) as [comment]

編集: 8000 文字しかない結果を返すため、データが varchar(max) に入っていないようです。これは select ステートメントの一部です。32759 文字を超える結果を得るのに問題はありません。Excel に貼り付けるときに次の行に遭遇するだけです。そのため、切り捨てようとしています。

4

2 に答える 2

2

他の誰かがこの問題に遭遇した場合に備えて、これを投げたほうがよいかもしれません:

convert(varchar(max), ( cast(substring(comment,1,8000) as varchar(max)) +     
cast(substring(comment,8001,8000) as varchar(max)) + 
cast(substring(comment,16002,8000) as varchar(max)) + 
cast(substring(comment,24003,8000) as varchar(max)) + 
cast(substring(comment,32004,755) as varchar(max)) )) as 
[comment]

各ピースをキャストしないことで、データ サイズがすべてのピースに対応するデータ サイズ/タイプに設定されているように見えます。

于 2013-02-12T20:30:37.717 に答える
1

このようなものはすべて必要ではありません。の場合commentvarchar(max)、次のように言えます。

SUBSTRING(comment, 1, 37259)

そうである場合、textまたはntext最初に変換する必要がある場合:

SUBSTRING(CONVERT(VARCHAR(MAX), comment), 1, 37259)

(これは明らかにあなたのソリューションよりもはるかにきれいです。)

于 2013-02-12T20:53:50.733 に答える