DISTINCT 数据类型
DISTINCT 类型是从源类型(称为基本类型)派生的数据类型。
源类型可以是: 内置类型 现有 DISTINCT 类型 现有命名 ROW 类型 现有不透明类型 DISTINCT 类型继承其源类型在磁盘上的长度和对齐方式。因此,DISTINCT 类型高效 地使用数据库服务器预先存在的功能。 创建 DISTINCT 数据类型时,数据库服务器将自动创建两种显式强制转型:一种从 DISTINCT 类型强制转型为其源类型,另一种是从源类型强制转型为 DISTINCT 类型。基于 内置源类型的 DISTINCT 类型不继承为内置类型提供的内置强制转型。但是,DISTINCT 类 型却继承已对源类型定义的任何用户定义的强制转型。 DISTINCT 类型不能直接与其源类型进行比较。要比较这两种类型,首先必须显式地将 一种类型强制转型为另一种类型。 必须在数据库中定义 DISTINCT 类型。DISTINCT 类型的定义存储在 sysxtdtypes 系 统目录表中。以下 SQL 语句会维护数据库中 DISTINCT 类型的定义: CREATE DISTINCT TYPE 语句将 DISTINCT 类型添加至数据库。 DROP TYPE 语句从数据库中除去先前定义的 DISTINCT 类型。 有关上面提到的 SQL 语句的更多信息,请参阅 GBase 8s SQL 指南:语法。有关对 DISTINCT 数据类型强制转型的信息,请参阅单值类型的强制转型。 基本类型为内置字符类型的 DISTINCT 类型的声明中的大小规范可受字符类型声明中 的逻辑字符语义一节中描述的 SQL_LOGICAL_CHAR 功能影响。
DOUBLE PRECISION 数据类型
DOUBLE PRECISION 关键字是 FLOAT 关键字的同义词。
FLOAT(n) 数据类型
FLOAT 数据类型存储最多 17 个有效位的双精度浮点数。FLOAT 对应于 IEEE 4 字节 浮点,并对应于 C 中的 double 数据类型。FLOAT 数据类型的值范围与计算机上 C double 数据类型的值范围相同。 您可以使用 n 来指定 FLOAT 数据类型的精度,但 SQL 会忽略该精度。值 n 必须是 1 与 14 之间的整数。 具有 FLOAT 数据类型的列通常存储只能近似计算的科学数字。由于浮点数只保留其大 部分有效数字,所以您在此类型的列中输入的数字与数据库服务器显示的数字可能会稍有 不同。 两个值之间的差别取决于计算机内部存储浮点数的方式。例如:您可能会将值 1.1000001 输入 FLOAT 字段中,那么在处理了 SQL 语句之后,数据库服务器可能会将此 值显示为 1.1。当值具有的位数比浮点数可存储的位数多时,就会发生这种情况。在这种 情况下,用值的近似形式存储值,将其余有效数位视为零。 对于 FLOAT 数据类型,每个值通常需要 8 个字节的存储器。将 FLOAT 值转换为 DECIMAL 值产生 17 位精度。
IDSSECURITYLABEL 数据类型
IDSSECURITYLABEL 类型将安全标号存储在受基于标号的访问控制 (LBAC) 安全 策略保护的表中。
只有具有 DBSECADM 角色的用户才能创建、改变或删除此数据类型的列。 IDSSECURITYLABEL 是内置的 DISTINCT OF VARCHAR(128) 数据类型。 具有安全策略的表 可以只有一个 IDSSECURITYLABEL 列。 不具有安全策略的表可以没有该列。不能在类型为 IDSSECURITYLABEL 的列中对安全标号进行加密。
NT 数据类型
INT 数据类型与 INTEGER 同义。
INT8 数据类型
INT8 数据类型存储从值为范围 –9,223,372,036,854,775,807 到 9,223,372,036,854,775,807 [或 -(263-1) 到 263-1] 的整数(18 或 19 位精度)。 数字 –9,223,372,036,854,775,808 是保留值,不能使用。INT8 数据类型通常用来 存储很大的计数和数量等等。 GBase 8s 使用可能需要多达 10 个字节存储空间的内部格式来存储 INT8 数据。 对整数数据执行算术运算和排序比较比对浮点或定点小数数据执行的效率要高,但 INT8 不能存储绝对值超过 | 263-1 | 的数据。如果值超出 INT8 的数字范围,那么数据库 服务器不存储该值。




