3.3.14 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 功能影响。
3.3.15 DOUBLE PRECISION 数据类型
DOUBLE PRECISION 关键字是 FLOAT 关键字的同义词。
3.3.16 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 位精度。




