SQL中text类型与varchar[8000]的区别 最近用到插入一个长数据,不知道用text类型还是用varchar[8000]听别人说text类型的长度比varchar[8000]大,自己不是很确定,求高手指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 能在8000范围内最好用varchar,超过就用text,text没有varchar好处理 text不好用的 如果字符串长度不长的话 用varchar 如果2005以上 建议用varchar(max) 可以存储2G 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) 个字节。 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 varcharDECLARE @myNextVariable AS charSET @myVariable = 'abc'SET @myNextVariable = 'abc'--The following returns 1SELECT 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'; sqlserver 2005之后建议使用varchar(max)或者nvarchar(max)使用text速度会比上面所说两种的慢,并且处理起来麻烦 text是大文本类型,与varchar有很大区别尤其是对text的读写都不同 高手们教教我这个存储过程为什么在C#中调用不了 SQL面试题大家帮帮忙! 搜索一个表,条件是在另外一个表里面找不到该记录。一句sql不会。 如何修改在使用中的数据库 存储过程中事务回滚与返回值的问题。 如何将不同数据库中的表及内容复制到另一个数据库中? 同一数据库中两表的数据同步(要求用存储过程实现) 关于不同等级会员所发布信息的排序问题的设计思路 表无主键,如何实现分页查询; 如何将Excel表的含有数字和字符的列,使用sql语句,倒入到SQL Server? 请问一个DBF导入SQL Server 08的问题 千万列的表 join 另一个10万列,连接条件是不等式,蜗牛速度怎么办
如果2005以上 建议用varchar(max) 可以存储2G
请参阅
全部折叠全部展开 语言筛选器: 全部语言筛选器: 多个语言筛选器: 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) 个字节。
请参阅
全部折叠全部展开 语言筛选器: 全部语言筛选器: 多个语言筛选器: 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';
使用text速度会比上面所说两种的慢,并且处理起来麻烦
尤其是对text的读写都不同