Почему максимальная длина varchar меньше 8000 байт? - PullRequest
3 голосов
/ 26 марта 2009

Итак, у меня есть хранимая процедура в базе данных SQLServer 2005, которая извлекает данные из таблицы, форматирует данные в виде строки и помещает их в выходную переменную varchar (max).

Однако я заметил, что хотя len (s) сообщает, что строка> 8000, фактическая строка, которую я получаю (через окно вывода SQLServer), всегда усекается до <8000 байт. </p>

Кто-нибудь знает, каковы причины этого? Большое спасибо.

Ответы [ 4 ]

7 голосов
/ 26 марта 2009

Скорее всего, само окно вывода усекает ваши данные. Сама переменная содержит данные, но в окне отображаются только первые X символов.

Если вы прочитаете эту выходную переменную, например, из приложения .NET, вы увидите полное значение.

5 голосов
/ 26 марта 2009

Вы говорите в SQL Server Management Studio? Если это так, есть некоторые параметры для контроля количества возвращаемых символов (у меня есть только 2008 передо мной, но настройки находятся в Инструменты | Параметры | Результаты запросов | SQL Server | Результаты в сетку | Максимальное количество извлекаемых символов и Результаты в текст | Максимальное количество символов, отображаемых в каждом столбце.

0 голосов
/ 26 марта 2009

Однако я заметил, что хотя len (s) сообщает, что строка> 8000

Я тоже столкнулся с проблемой SQL Studio :), но максимальная длина varchar составляет 8000 байт или 4000 для nvarchar (Unicode).

Есть вероятность, что тип данных столбца на самом деле text или ntext , и вы конвертируете в varchar ?

0 голосов
/ 26 марта 2009

Все данные есть, но студия управления не отображает все данные.

В подобных случаях я использовал MS Access для связи с таблицей и чтения данных. Печально, что вам нужно использовать Access для просмотра данных вместо Management Studio или Query Analyzer, но похоже, что так оно и есть.

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