我试图在32,759个字符之后截断结果,因为这是excel中的字符限制,这就是我的结果将被粘贴的位置。
到目前为止我尝试了两种方法:
CONVERT(varchar(max), substring(comment,1,37259)) as [Comment]
CONVERT(varchar(max), ( substring(comment,1,8000) + substring(comment,8001,16000)...)) as [comment]
编辑:似乎数据没有进入varchar(max),因为它返回的结果只有8000个字符。这是select语句的一部分。我没有问题得到超过32759个字符的结果,只是当它粘贴到excel时它们会进入下一行 - 这就是我试图截断的原因。
答案 0 :(得分: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]
看起来似乎没有将每个部分的数据大小设置为容纳所有部分的数据大小/类型。
答案 1 :(得分:1)
所有这些东西都不是必需的。如果comment
为varchar(max)
,您应该可以说:
SUBSTRING(comment, 1, 37259)
如果是text
或ntext
,则需要先转换它:
SUBSTRING(CONVERT(VARCHAR(MAX), comment), 1, 37259)
(这显然比你的解决方案更整洁。)