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

问题描述:

我试图截断32,759个字符后的结果,因为这是Excel中的字符限制,这就是我的结果将被粘贴的位置。如何在SQL Server中的特定字符数量之后截断结果

两个方法,到目前为止,我已经试过:

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

编辑:好像数据没有进入的VARCHAR(最大)作为它的返回结果,只有8000个字符。这是选择语句的一部分。在32759个字符中获得结果没有任何问题,只是当它们粘贴到excel中时,它们会进入下一行 - 这就是我试图截断的原因。

+2

你的意思是*没有运气*,究竟发生了什么?,你会得到一个错误吗?,结果是错误的?什么是'comment'的dataype? – Lamak 2013-02-12 20:11:51

+0

可以给我们看看表格模式请问 – 2013-02-12 20:18:02

+0

我不能复制这个问题[这里](http://www.sqlfiddle.com/#!3/26779/5),这个问题似乎没有用sql-服务器截断结果。 – GarethD 2013-02-12 20:28:55

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

SUBSTRING(comment, 1, 37259) 

如果是textntext,那么你需要先将其转换:

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

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

+0

确实很整齐。当我在SE上寻找答案时,通常意味着我应该在20分钟前离开问题。此外,长度需要是32758(我不能编辑B/C它 2013-02-12 21:53:59

想通了,还不如万一别人运行折腾这件事了这个问题:

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] 

它看起来像由不投每片数据的大小被设置为数据大小/类型这将容纳所有的作品。