Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 数据类型 » 字符数据类型

 

CHAR 数据类型

CHAR 数据类型存储字符数据,最多可存储 32767 个字节。

语法
CHAR [ ( max-length [ CHAR | CHARACTER ] ) ]
参数
  • max-length   字符串的最大长度。如果使用字节长度语义(不将 CHAR 或 CHARACTER 指定为长度的一部分),则长度将以字节为单位,并且长度必须在 1 到 32767 范围内。如果未指定长度,则值为 1。

    如果使用字符长度语义(将 CHAR 或 CHARACTER 指定为长度的一部分),则长度将以字符为单位,并且必须指定 max-length。使用字符长度语义时,长度与数据库编码中字符最大长度的乘积不得超过 32767 个字节。下表显示所支持字符集类型的最大长度:

    字符集 CHAR 的最大长度
    单字节字符集 32767 个字符
    双字节字符集 16383 个字符
    UTF-8 8191 个字符

注释

可以将多字节字符存储为 CHAR 类型,但除非使用字符长度语义,否则所声明的长度指的是字节长度,而不是字符长度。

也可以将 CHAR 指定为 CHARACTER。无论使用哪种语法,都会将数据类型描述为 CHAR。

虽然 CHAR 和 VARCHAR 属于不同的类型,但它们在语义上是等同的。在 SQL Anywhere 中,CHAR 是一种可变长度类型。在其它关系数据库管理系统中,CHAR 是一种固定长度类型,将使用空白填充数据来使其达到 max-length 个存储字节。SQL Anywhere 不会使用空白填充所存储的字符数据。

视所使用的接口而定,当客户端应用程序对某列执行 DESCRIBE 时,使用字符长度语义可能会影响返回的值。例如,当某个嵌入式 SQL 客户端对某列执行通过字节长度语义声明的 DESCRIBE 时,所返回的长度为指定的字节长度。因此,CHAR(10) 列将被描述为长度为 10 个字节的类型 DT_FIXCHAR。不过,当嵌入式 SQL 客户端对某列执行通过字符长度语义声明的 DESCRIBE 时,所返回的长度将是在客户端的 CHAR 字符集中指定的最大字节长度。例如,对于将 UTF-8 用作 CHAR 字符集的嵌入式 SQL 客户端,CHAR(10 CHAR) 列将被描述为长度是 40 个字节(10 个字符乘以每个字符的最大字节数四)的类型 DT_FIXCHAR。

另请参见
标准和兼容性
  • SQL/2003   与 SQL/2003 兼容。字符长度语义是服务商扩充。