为什么varchar的最大长度小于8,000字节?

时间:2009-03-26 18:24:56

标签: sql-server-2005 stored-procedures types

所以我在SQLServer 2005数据库中有一个存储过程,该数据库从表中检索数据,将数据格式化为字符串并将其放入varchar(max)输出变量。

然而,我注意到虽然len(s)报告字符串是> 8,000,我收到的实际字符串(通过SQLServer输出窗口)总是被截断为< 8,000个字节。

有谁知道这可能是什么原因?非常感谢。

4 个答案:

答案 0 :(得分:7)

输出窗口本身很可能会截断您的数据。变量本身保存数据,但窗口仅显示前X个字符。

如果您要从例如.NET应用程序中读取该输出变量,您将看到完整的值。

答案 1 :(得分:5)

您是在谈论SQL Server Management Studio吗?如果是这样,有一些选项可以控制返回多少个字符(我只有2008在我面前,但设置在工具|选项|查询结果| SQL Server |结果到网格|检索的最大字符和结果到文本|每列中显示的最大字符数。

答案 2 :(得分:0)

数据就在那里,但是管理工作室没有显示所有数据。

在这种情况下,我使用MS Access链接到表并读取数据。很遗憾您必须使用Access来查看数据而不是Management Studio或查询分析器,但似乎是这种情况。

答案 3 :(得分:0)

但是,我注意到虽然len(s)报告的字符串是> 8000

我已经陷入了SQL Studio问题:)但不是varchar 8,000字节的最大长度,或者nvarchar(unicode)的最大长度为4,000。

列数据类型实际上是文本还是 ntext ,您是否有可能转换为 varchar