字符数据类型存储字符串值
-
内置字符类型
数据库服务器还可以使用 LVARCHAR 表示不透明数据类型的外部格式。在数据库服务器的 I/O 操作中,除文件大小限制、操作系统或硬件资源的限制之外,LVARCHAR 数据值的大小没有上限。
-
字符类型声明中的逻辑字符语义
GBase 8s支持配置参数 SQL_LOGICAL_CHAR,其设置可指示 SQL 解析器将 CREATE TABLE 或 ALTER TABLE 语句数据类型声明中字符列的最大大小解释为逻辑字符,而不是以字节为单位。
创建数据库之后,数据库服务器的当前 SQL_LOGICAL_CHAR 设置会记录在系统目录的 systables 表中。设置为 OFF 或 1 时,该功能对随后在数据库中创建或变更的表没有影响。
然而,在 SQL_LOGICAL_CHAR 设置为 ON 或为 2、3 或 4 之间的数字的数据库中,针对以下字符类型,SQL 解析器会将显式和隐式大小声明解释为 SPL 变量声明和数据库表中的列声明中的逻辑字符:
CHAR 和 CHARACTER
CHARACTER VARYING 和 VARCHAR
LVARCHAR
NCHAR
NVARCHAR
以上所列出数据类型的 DISTINCT 类型
那些 DISTINCT 类型的 DISTINCT 类型
以上所列出类型的 ROW 数据类型字段。
以上所列出类型的 LIST、MULTISET 和 SET 元素。
此功能对之前表中列出的字符类型的最大存储大小限制没有影响。然而,对于使用多字节语言环境的数据库,可在将字符串插入到字符列或指定给字符变量时,降低数据截断的风险。
例如,如果数据库的 SQL_LOGICAL_CHAR 设置是 4,那么 VARCHAR(10, 5) 规范会解释为要求最大 40 个字节的存储,保留这些字节中的 5 个,在标准 SQL 表示法中创建 VARCHAR(40, 5) 数据类型,而不是声明中指定的规范。
由于多字节字符的最小大小是 1 个字节,因此 VARCHAR 和 NVARCHAR 数据类型的保留大小参数不受 SQL_LOGICAL_CHAR 设置影响。在此示例中,5 多字节字符的最小大小是 5 个字节,大小保持不变
-
数据类型提升
对于 GBase 8s 的一些字符串操纵操作,上面列出的五个内置字符数据类型支持数据类型提升,以降低由于返回的字符串太大而无法存储在 NVARCHAR 或 VARCHAR 列或程序变量中,从而导致字符串操作失败的风险。请参阅 GBase 8t SQL 指南:语法 中的“从 CONCAT 和 String 操纵函数返回的类型”主题,以获取在 GBase 8t 字符类型之间进行数据类型提升的详细信息。
-
本地语言支持
有时,NCHAR 和 NVARCHAR 类型称为本地语言支持数据类型,因为其支持本地化的整理。由于 VARCHAR 或 NVARCHAR 类型的列没有缺省大小,因此您必须在声明中指定大小(不大于 255)。对于定义索引的 VARCHAR 或 NVARCHAR 列,最大大小是 254 个字节。