如何在SQL Server中的一定数量的字符后截断结果

时间:2013-02-12 20:10:17

标签: sql sql-server-2008 excel

我试图在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时它们会进入下一行 - 这就是我试图截断的原因。

2 个答案:

答案 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)

所有这些东西都不是必需的。如果commentvarchar(max),您应该可以说:

SUBSTRING(comment, 1, 37259)

如果是textntext,则需要先转换它:

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

(这显然比你的解决方案更整洁。)