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 兼容。字符长度语义是服务商扩充。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |