请单击以进行评分并提供反馈
TechNet
TechNet 库
SQL Server
SQL Server 2008
数据库引擎
开发
 使用 char 和 varchar 数据
社区内容
本节内容
统计 批注 (0)
全部折叠/全部展开 全部折叠
同时提供下列产品的其他版本:
SQL Server 2008 联机丛书(2009 年 7 月)
使用 char 和 varchar 数据

charvarchar 数据类型存储由以下字符组成的数据:

  • 大写字符或小写字符。例如,a、b 和 C。
  • 数字。例如,1、2 和 3。
  • 特殊字符。例如,at 符号 (@)、“与”符号 (&) 和感叹号 (!)。

charvarchar 数据可以是单个字符。char 数据还可以是最多包含 8000 个字符的字符串,varchar 数据可以是最多包含 2^31 个字符的字符串。varchar 数据可以有两种形式。varchar 数据的最大字符长度可以是指定的。例如,varchar(6) 指示此数据类型最多存储六位字符;它也可以是 varchar(max), 形式的,即此数据类型可存储的最大字符数可达 2^31。有关 varchar(max), 的详细信息,请参阅使用大值数据类型

每个 charvarchar 数据值都具有排序规则。排序规则定义属性,如用于表示每个字符的位模式、比较规则以及是否区分大小写或重音。每个数据库有默认排序规则。当定义列或指定常量时,除非使用 COLLATE 子句指派特定的排序规则,否则将为它们指派数据库的默认排序规则。当组合或比较两个具有不同排序规则的 charvarchar 值时,根据排序规则的优先规则来确定操作所使用的排序规则。

字符常量必须包括在单引号 (') 或双引号 (") 中。建议用单引号括住字符常量。当 QUOTED IDENTIFIER 选项设为 ON 时,有时不允许用双引号括住字符常量。

下面的 Transact-SQL 示例给一个字符变量赋值:

DECLARE @MyCharVar CHAR(25)
SET @MyCharVar = 'Ricardo Adocicados'

如果使用单引号分隔的字符常量包含一个嵌入的单引号,可以使用两个单引号表示嵌入单引号。例如:

SET @MyCharVar = 'O''Leary'

如果要存储的数据比允许的字符数多,则数据就会被截断。例如,如果某列被定义为 char(10),现要将值“This is a really long character string”存储到该列,则 SQL Server 将把该字符串截断为“This is a ”。

当指定了 NOT NULL 子句时,char 数据类型是一种长度固定的数据类型。如果插入值的长度比 char NOT NULL 列的长度小,将在值的右边填补空格直到达到列的长度。例如,如果某列定义为 char(10),而要存储的数据是“music”,则 SQL Server 将数据存储为“music_____”,这里“_”表示空格。

如果创建 char NULL 列时 ANSI_PADDING 为 ON,则其行为将和 char NOT NULL 列一样:在值的右边填补直到达到列的长度。如果创建 char NULL 列时 ANSI_PADDING 为 OFF,则该列的行为将和 ANSI_PADDING 设为 OFF 的 varchar 列一样:尾随空格将被截断。

varchar 数据类型是一种长度可变的数据类型。比列的长度小的值,不会在值的右边填补来达到列的长度。在创建列时,如果 ANSI_PADDING 选项设置为 OFF,则所有存储在列中的字符值末尾的空格都将截断。在创建列时,如果 ANSI_PADDING 设置为 ON,则末尾空格将不截断。

在字符串字节中的位的存储方式是按照安装时指定的 Microsoft SQL Server 代码页来解释的。charvarchar 对象可以包含 SQL Server 代码页中的任何字符。

使用 SQL Server 6.5 或更低版本中的 SQL Server ODBC 驱动程序的应用程序只能支持最大 255 个字节的字符数据。如果这些应用程序尝试检索 SQL Server 7.0 或更高版本的字符参数或结果集中包含的数据超过 255 个字节,则字符数据将在第 255 个字节处截断。

社区内容   什么是社区内容?
添加新内容 RSS  批注
Processing
© 2009 Microsoft Corporation 版权所有。 保留所有权利 | 商标 | 隐私权声明
Page view tracker