字符串或二进制数据将被截断SQL错误

时间:2011-07-26 05:15:14

标签: sql tsql varchar

我有一个SQL存储过程,它接受VARCHAR(MAX)类型的参数。 据我所知,根据我读到的所有内容,这些字符串的最大大小为2GB: MSDN

由于某种原因,当传递大于8KB的字符串时,我得到:

  

字符串或二进制数据将被截断。

为什么我会收到此错误消息,如何解决?

4 个答案:

答案 0 :(得分:8)

要避免此问题,您必须先将字符串转换为varchar(max)

column = cast(other_column as varchar(max))

这样任何超过max(8000或4000,取决于版本)的字符串都将被截断为最大长度。

答案 1 :(得分:8)

根据BoL(您指定的链接),解释存在差异。 您可以在查询中使用的最大数量(n部分)是8000.出于存储目的,varchar(max)可以在磁盘上处理2GB。

它只是解释用于查询和存储目的的数据类型。所以最重要的是,您只能在查询中使用8000个字符....

答案 2 :(得分:1)

你传递的字符串大于比数据库中的列,对吗? 尝试增加列的大小。

答案 3 :(得分:1)

您传递的字符串大于数据库中的

与您的数据库表类似如下:

 EXECUTIVE  varchar(15) 

但您的插入字符串(在 vb.net 中):

cmd.Parameters.Add("@EXECUTIVE", Data.SqlDbType.VarChar, 150).Value = CmbExecutive.Text.ToString()