YashanDB 字符型数据
YashanDB 中的字符型包括英文字母、中文汉字、数字字符和特殊字符等,多用于存储文本数据。此外,该类型还能通过隐式数据转换,灵活地参与到数值型、日期时间型的运算场景之中。
字符型具体可分为 CHAR、VARCHAR、NCHAR 和 NVARCHAR 四种数据类型。
存储属性

Note:
在 HEAP 表中,长度超过 8000 字节的 VARCHAR/NVARCHAR 列会转换成 LOB 类型进行存储。创建表时,若指定某个列的数据类型大小超过 8000 字节,该列就会转换成 LOB 类型进行存储。
例如在 UTF8 字符集(一个字符最大可以占用 4 字节)下,定义了 VARCHAR(2001 CHAR)列,则可能会存储 8004 字节的数据,此时该列会转换成 LOB 类型进行存储。
CHAR 和 VARCHAR
CHAR 数据类型用于指定固定长度的字符串,VARCHAR 数据类型用于指定可变长度的字符串。
CHARACTER 可作为 CHAR 别名使用,含义与 CHAR 含义相同。VARCHAR2、CHARACTER VARYING 可作为 VARCHAR 别名使用,含义与 VARCHAR 含义相同。
定义格式:

Size:宽度,表示最大长度,根据可选长度单位可分为字节长度和字符长度,行存表支持两种长度单位,列存表仅支持字节长度单位。
Size 后可选单位为 byte 和 char,分别为按照字节和按照字符,其中 byte 和 char 与 Size 之间可有空格也可以没有。若不指定单位,默认为 byte。长度单位与 NCHAR 及 NVARCHAR 类型有所不同,请注意区分。
示例(HEAP 表)
NCHAR 和 NVARCHAR
NCHAR 用于指定支持 UNICODE 的固定长度字符串,NVARCHAR 用于指定支持 UNICODE 的可变长度字符串,这两种字符型仅支持在配置 UNICODE 字符集的数据库中使用,可以对多语言数据进行存储。
NVARCHAR2 可作为 NVARCHAR 别名使用,含义与 NVARCHAR 含义相同。
NCHAR 和 NVARCHAR 类型仅适用于 HEAP 表。
定义格式:

Size 用于表示字符个数,必须为一个整数数值,数据的存储长度为 Size 的 2 倍,单位为字符长度。
NCHAR 类型存储长度上限为 8000 字节,NVARCHAR 类型存储长度上限为 32000 字节,超过如上大小限制的数据不会进行存储。
示例(HEAP 表)
字符型排序
当对字符型数据执行排序操作时:
默认基于字符的 ASCII 值排序,例如'a'小于'b','1'小于'2'。
通过NLSSORT函数,可以对 UTF8 编码的数据进行拼音排序。
字符型比较
当两个字符型数据执行比较运算时:
执行大小写敏感的字符串比较。
若比较符两边均为 CHAR 或均为 NCHAR 类型,YashanDB 会先将较短的 CHAR 或 NCHAR 空格补位至较长 CHAR 的长度,再进行值比较。
若比较符号的任意一边为 VARCHAR 或 NVARCHAR 类型,则不进行空格补位直接比较。
示例
版权声明: 本文为 InfoQ 作者【YashanDB】的原创文章。
原文链接:【http://xie.infoq.cn/article/8bdc6a5cdf2d37d90dc564642】。文章转载请联系作者。
评论