2013-02-12 2 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] 

Edit: Похоже, что данные не попасть в VARCHAR (макс), как это возвращать результаты только 8000 символов. Это часть выражения select. У меня нет проблем с получением результатов по 32759 символов, просто они попадают в следующую строку при вставке в excel - вот почему я пытаюсь усечь.

+2

Что вы имеете в виду * не повезло *, что на самом деле происходит ?, вы получаете сообщение об ошибке ?, результат неправильный ?. Что такое dataype 'comment'? – Lamak

+0

Можете ли вы показать нам схему таблицы, пожалуйста, –

+0

Я не могу воспроизвести эту проблему [здесь] (http://www.sqlfiddle.com/#!3/26779/5), проблема не связана с sql- сервер усекает результаты. – GarethD

ответ

1

Все это не должно быть необходимым. Если comment является varchar(max), вы должны быть в состоянии сказать:

SUBSTRING(comment, 1, 37259) 

Если text или ntext то вам нужно преобразовать его первый:

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

(который, очевидно, гораздо опрятнее, чем ваше решение.)

+0

Много отличное. К тому времени, когда я ищу ответ на SE, это обычно означает, что я должен был уйти от проблемы 20 минут назад. Кроме того, длина должна быть 32758 (я не мог редактировать b/c, это изменение <6 символов) –

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] 

Это выглядит, не бросая каждый кусок размера данных создается для размера данных/типа который будет вмещать все части.

Смежные вопросы