2013-02-12 67 views
1

我試圖截斷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

回答

1

所有這些東西都不是必需的。如果commentvarchar(max),你應該能夠說:

SUBSTRING(comment, 1, 37259) 

如果是textntext,那麼你需要先將其轉換:

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

(這顯然是比你的解決方案更爲整潔。 )

+0

確實很整齊。當我在SE上尋找答案時,通常意味着我應該在20分鐘前離開問題。此外,長度需要是32758(我不能編輯B/C它<6個字符的變化) – 2013-02-12 21:53:59

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] 

它看起來像由不投每片數據的大小被設置爲數據大小/類型這將容納所有的作品。

相關問題