Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
VARCHAR 数据类型存储字符数据,最多可存储 32767 个字节。
VARCHAR [ ( max-length [ CHAR | CHARACTER ] ) ]
max-length 字符串的最大长度。此缺省值是 1。
如果使用字节长度语义(不 将 CHAR 或 CHARACTER 指定为长度的一部分),则长度将以字节为单位,并且长度必须在 1 到 32767 的范围内。
如果使用字符长度语义(将 CHAR 或 CHARACTER 指定为长度的一部分),则长度将以字符为单位,并且必须指定 max-length。max-length 的最大长度可以是 32767 个字符。
可以将多字节字符存储为 VARCHAR 类型,但声明的长度指的是字节长度而不是字符长度。
也可以将 VARCHAR 指定为 CHAR VARYING 或 CHARACTER VARYING。无论使用哪种语法,都会将数据类型描述为 VARCHAR。
虽然 VARCHAR 和 CHAR 属于不同的类型,但它们在语义上是等同的。在 SQL Anywhere 中,VARCHAR 是一种可变长度类型。在其它关系数据库管理系统中,VARCHAR 是一种固定长度类型,将使用空白填充数据来使其达到 max-length 个存储字节。SQL Anywhere 不会使用空白填充所存储的字符数据。
如何描述 VARCHAR 列取决于客户端接口、使用的字符集以及是否使用字符长度语义。例如,嵌入式 SQL 中描述的长度是客户端字符集中的最大字节数。如果描述的长度大于 32767 个字节,则将该列描述为类型 DT_LONGVARCHAR。下表显示了一些嵌入式 SQL 示例以及在执行 DESCRIBE 时返回的结果:
对于 ODBC,将 VARCHAR 描述为 SQL_VARCHAR。
SQL/2008 与 SQL/2008 兼容。在该标准中,字符长度语义是缺省设置;而在 SQL Anywhere 中,字节长度语义是缺省设置。由于 SQL 标准支持不区分大小写的归类和 SQL Anywhere 对空格填充的支持,因此二者之间存在一些微小的不一致。
SQL/2008 标准支持显式字符长度语义或作为 SQL 语言功能 T061 的字节长度语义。