最近用到插入一个长数据,不知道用text类型还是用varchar[8000]
听别人说text类型的长度比varchar[8000]大,自己不是很确定,求高手指点

解决方案 »

  1.   

    能在8000范围内最好用varchar,超过就用text,text没有varchar好处理
      

  2.   

    text不好用的  如果字符串长度不长的话 用varchar 
    如果2005以上 建议用varchar(max) 可以存储2G
      

  3.   

    ntext、text 和 image (Transact-SQL)  发送反馈 
      请参阅    
     全部折叠全部展开 语言筛选器: 全部语言筛选器: 多个语言筛选器: Visual Basic语言筛选器: C#语言筛选器: C++语言筛选器: J#语言筛选器: JScript 
     
     Visual Basic(Declaration) 
     C#
     C++
     J#
     JScript重要提示: 
    在 Microsoft SQL Server 的未来版本中将删除 ntext、text 和 image 数据类型。请避免在新开发工作中使用这些数据类型,并考虑修改当前使用这些数据类型的应用程序。请改用 nvarchar(max)、varchar(max) 和 varbinary(max)。用于存储大型非 Unicode 字符、Unicode 字符及二进制数据的固定长度数据类型和可变长度数据类型。Unicode 数据使用 UNICODE UCS-2 字符集。
     
    ntext 
    长度可变的 Unicode 数据,最大长度为 2^30 - 1 (1,073,741,823) 个字符。存储大小是所输入字符个数的两倍(以字节为单位)。ntext 的 ISO 同义词为 national text。text 
    服务器代码页中长度可变的非 Unicode 数据,最大长度为 2^31-1 (2,147,483,647) 个字符。当服务器代码页使用双字节字符时,存储仍是 2,147,483,647 字节。根据字符串,存储大小可能小于 2,147,483,647 字节。image 
    长度可变的二进制数据,从 0 到 2^31-1 (2,147,483,647) 个字节。
      

  4.   

    char 和 varchar (Transact-SQL)  发送反馈 
      请参阅    
     全部折叠全部展开 语言筛选器: 全部语言筛选器: 多个语言筛选器: Visual Basic语言筛选器: C#语言筛选器: C++语言筛选器: J#语言筛选器: JScript 
     
     Visual Basic(Declaration) 
     C#
     C++
     J#
     JScript固定长度或可变长度的字符数据类型。char [ ( n ) ] 
    固定长度,非 Unicode 字符数据,长度为 n 个字节。n 的取值范围为 1 至 8,000,存储大小是 n 个字节。char 的 ISO 同义词为 character。varchar [ ( n | max ) ] 
    可变长度,非 Unicode 字符数据。n 的取值范围为 1 至 8,000。max 指示最大存储大小是 2^31-1 个字节。存储大小是输入数据的实际长度加 2 个字节。所输入数据的长度可以为 0 个字符。varchar 的 ISO 同义词为 char varying 或 character varying。备注
    如果未在数据定义或变量声明语句中指定 n,则默认长度为 1。如果在使用 CAST 和 CONVERT 函数时未指定 n,则默认长度为 30。将为使用 char 或 varchar 的对象指派数据库的默认排序规则,除非使用 COLLATE 子句指派了特定的排序规则。该排序规则控制用于存储字符数据的代码页。如果站点支持多语言,请考虑使用 Unicode nchar 或 nvarchar 数据类型,以最大限度地消除字符转换问题。如果使用 char 或 varchar,建议执行以下操作:如果列数据项的大小一致,则使用 char。
    如果列数据项的大小差异相当大,则使用 varchar。
    如果列数据项大小相差很大,而且大小可能超过 8,000 字节,请使用 varchar(max)。
    当执行 CREATE TABLE 或 ALTER TABLE 时,如果 SET ANSI_PADDING 为 OFF,则定义为 NULL 的 char 列将作为 varchar 处理。当排序规则代码页使用双字节字符时,存储大小仍然为 n 个字节。根据字符串的不同,n 个字节的存储大小可能小于 n 个字符。示例
    在变量声明中显示 n 的默认值。
    以下示例显示在变量声明中使用 char 和 varchar 数据类型时,这些数据类型的默认值 n 为 1。 复制代码 
    DECLARE @myVariable AS varchar
    DECLARE @myNextVariable AS char
    SET @myVariable = 'abc'
    SET @myNextVariable = 'abc'
    --The following returns 1
    SELECT DATALENGTH(@myVariable), DATALENGTH(@myNextVariable);
    GO
     B. 在 CAST 和 CONVERT 中使用 varchar 时,显示 n 的默认值。
    以下示例显示在 CAST 和 CONVERT 函数中使用 char 或 varchar 数据类型时,n 的默认值为 30。 复制代码 
    DECLARE @myVariable AS varchar(40)
    SET @myVariable = 'This string is longer than thirty characters'
    SELECT CAST(@myVariable AS varchar)
    SELECT DATALENGTH(CAST(@myVariable AS varchar)) AS 'VarcharDefaultLength';
    SELECT CONVERT(char, @myVariable)
    SELECT DATALENGTH(CONVERT(char, @myVariable)) AS 'VarcharDefaultLength';
     
      

  5.   

    sqlserver 2005之后建议使用varchar(max)或者nvarchar(max)
    使用text速度会比上面所说两种的慢,并且处理起来麻烦
      

  6.   

    text是大文本类型,与varchar有很大区别
    尤其是对text的读写都不同