TEXT 数据类型

来源:这里教程网 时间:2026-03-02 13:06:47 作者:

3.3.38 TEXT 数据类型 TEXT 数据类型存储所有类型的文本数据。它可以同时包含语言环境支持的单字节字符 和多字节字符。术语简单大对象指的是 TEXT 和 BYTE 数据类型。 TEXT 列具有 2 31 个字节(两千兆字节)的理论限制和可用磁盘存储器确定的实际限制。 可以将相同表的不超过 195 列声明为 TEXT 数据类型。同一限制还适用于 BYTE 数据类型。 可以存储、检索、更新或删除 TEXT 列中的值。 仅当正在使用 IS NULL 或 IS NOT NULL 运算符测试 NULL 值时,才能在布尔表达式 中使用 TEXT 操作数。 您可以使用以下可装入行或更新字段的方法来插入 TEXT 数据:

使用 dbload 或 onload 实用程序 使用 LOAD 语句 (DB-Access) 从 TEXT 主变量 (ESQL) 存在内置强制转型将 TEXT 对象转换为 CLOB 对象。 TEXT 数据类型的字符串使用代码集顺序整理。有关整理顺序的更多信息,请参阅 《GBase 8s GLS 用户指南》。 在 TEXT 列中选择数据 当您选择 TEXT 列时,可以接收该列的全部或一部分。要检索整个列,使用选择列的 常规语法。还可通过使用下标来选择 TEXT 列的任何部分,如以下示例所示: SELECT cat_descr [1,75] FROM catalog WHERE catalog_num = 10001 SELECT 语句读取与 catalog_num 值 10001 相关联的 cat_descr 列的前 75 个字节。 将数据装入到 TEXT 列 您可以使用 LOAD 语句将数据插入表中。例如,inp.txt 文件包含以下信息: |aaaaa| 2|bbbbb| 3|cccccc| 要将此数据装入 blobtab 表中,请使用以下语句: LOAD FROM inp.txt INSERT INTO blobtab; 限制 不能在算术或字符串表达式中使用 TEXT 操作数,也不能使用 UPDATE 语句的 SET 子 句将字面值指定给 TEXT 列。 也不能用以下任何方法使用 TEXT 值: 使用聚集函数 使用 IN 子句 使用 MATCHES 或 LIKE 子句 使用 GROUP BY 子句 使用 ORDER BY 子句 不能使用带引号的文本字符串、数字或任何其他实际值来插入或更新 TEXT 列。 要点: 如果您尝试从子查询中返回 TEXT 列,那么会产生错误,即使没有任何 TEXT 列 用于比较条件或与 IN 谓词一起使用也是这样。 TEXT 值中的不可打印字符 TEXT 列通常存储文档和程序源文件等等。在缺省“美国英语”语言环境中,类型为 TEXT 的数据对象可以包含可打印 ASCII 字符与下列控制字符的组合: 制表符 (CTRL-I) 换行符 (CTRL-J)

换页符 (CTRL-L) 同时可以在 text 列中插入可打印字符和不可打印字符。GBase 8s 产品不会对插入到 具有 TEXT 数据类型的列中的任何数据值进行检查。(但是,应用程序可能无法显示包括 不可打印字符的 TEXT 值。)有关输入和显示不可打印字符的详细信息,请参阅 CHAR 类 型的不可打印字符。 3.3.39 TIMESTAMP 数据类型 TIMESTAMP 与 DATETIME 同义。不同的是,其中指定小数秒精度的 FRACTION 时间单位值是 1 到 6 范围内的数字,缺省值为 0。 3.3.40 VARCHAR(m,r) 数据类型 VARCHAR 数据类型存储包含单字节和(如果语言环境支持)多字节字符的可变长度字 符串,其中 m 是列的最大大小(以字节计),r 是为该列保留的最小字节数。 声明为 VARCHAR 的列(无圆括号或参数)具有一个字节的最大大小并且保留的大小置 零。 VARCHAR 数据类型是字符可变数据类型的 GBase 8s 实现。可变长度字符串的 ANSI 标 准数据类型是 CHARACTER VARYING。 VARCHAR 列的最大大小 (m) 参数的大小范围可以从 1 到 32765 个字节。 指定最小保留空间 (r) 参数是可选的。此值可以在从 0 到 32765 个字节的范围内, 但必须小于 VARCHAR 列的最大大小 (m)。如果您未指定任何最小值,缺省值是 0。当起初 打算在列中插入具有短字符串或 NULL 字符串的行,但后来想要用较长的值更新此数据时, 应指定此参数。 当为 VARCHAR 列设置索引时,其最大长度不能超过 Maxlen 值: Maxlen =((PAGESIZE-93)/5-1) 其中 PAGESIZE 是数据库服务器的页面大小。可以使用 onstat –d 命令查看 dbspace 的 PAGESIZE 值。 同一表上不超过 151 列可以是 VARCHAR 数据类型。 ROWTYPE 类型中包含 VARCHAR 列时其最大长度不能超过 32764 个字节。 将表中的字段修改为 VARCHAR 列或 Alter Type Varchar 列时,此 varchar 列长度 需要小于页面的可用空间。具体最大长度如下表所示:

在基于 VARCHAR 列(或 NVARCHAR 列)的索引中,每个索引键都具有基于实际输入的 数据值的长度,而不是声明的列的最大大小。 当您在 VARCHAR 列中存储字符串时,只会存储实际数据字符。数据库服务器不会除去 任何用户输入的结尾空格的 VARCHAR 字符串,也不会将 VARCHAR 值填充至列的声明长度。 如果指定保留空间 (r),但某些数据字符串比 r 字节要短,那么为行保留的某些空间变得 无用。 用比较 CHAR 值的相同方式将 VARCHAR 值与其他 VARCHAR 值(和其他字符串数据类 型)进行比较。用空格在右边填充较短的值直到这些值具有相同的长度;然后对其比较全 长。 VARCHAR 类型的不可打印字符 用处理 CHAR 值中的不可打印字符的相同方法输入、显示和处理不可打印 VARCHAR 字 符。有关详细信息,请参阅 CHAR 类型的不可打印字符。 存储 VARCHAR 列中的数字值 当在 VARCHAR 列中插入数字值时,不会用结尾空格将存储的值填充至列的最大长度。 数字 VARCHAR 值中的位数是存储该值所需要的字符数。例如:在下一个示例中,存储在表 mytab 中的值为 1。 create table mytab (col1 varchar(10)); insert into mytab values (1); 技巧: VARCHAR 将 C 语言的null(二进制 0)和字符串终止符看作不可打印字符的 终止字符。 在某些东亚语言环境中,如果数据库语言环境支持多字节代码集,那么 VARCHAR 数据 类型能够存储多字节字符。如果存储多字节字符,务必要计算所需的字节数。有关更多信 息,请参阅《GBase 8s GLS 用户指南》。 VARCHAR 类型的多字节字符 VARCHAR 数据类型声明中的第一个参数可受字符类型声明中的逻辑字符语义一节中描 述的 SQL_LOGICAL_CHAR 功能影响。 整理 VARCHAR 值 NVARCHAR 与 VARCHAR 数据类型之间的主要差别(就如 CHAR 与 NCHAR 之间的差别) 是整理顺序的差别。通常,VARCHAR(与 CHAR 和 LVARCHAR 一样)值是按其在代码集中存 在的字符顺序进行整理的。 例外情况是 MATCHES 运算符,当 DB_LOCALE(或 SET COLLATION)指定了本地化整理 顺序时,如果使用方括号 ( [ ] ) 符号来定义范围,那么它会将本地化整理应用于 NVARCHAR

和 VARCHAR 值(并应用于 CHAR、LVARCHAR 和 NCHAR 值)。有关更多信息,请参阅《GBase 8s GLS 用户指南》。

转载自:https://www.modb.pro/db/196419

相关推荐