首批通过分布式安全可靠测评,为关键业务系统打造
CAST_FROM_BINARY_DOUBLE
更新时间:2026-04-10 11:58:36
CAST_FROM_BINARY_DOUBLE 函数用于以 RAW 的二进制形式返回 BINARY_DOUBLE 值。
功能适用性
该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版仅提供 MySQL 模式。
语法
UTL_RAW.CAST_FROM_BINARY_DOUBLE(
n IN BINARY_DOUBLE,
endianess IN PLS_INTEGER DEFAULT 1)
RETURN RAW;
参数说明
| 参数 | 说明 |
|---|---|
| n | BINARY_DOUBLE 值。 |
| endianess | 表示字节顺序的 BINARY_INTEGER 值。该函数可以识别的定义常量如下:
big_endian。machine_endian 的设置与在大端机上的 big_endian 效果相同,或者与在小端机上的 little_endian 效果相同。 |
返回值
返回 BINARY_DOUBLE 值的二进制表示形式(RAW)。
使用说明
如下列表为一个 8 字节的
BINARY_DOUBLE值与 IEEE 754 双精度格式的映射关系:byte 0: bit 63 ~ bit 56 byte 1: bit 55 ~ bit 48 byte 2: bit 47 ~ bit 40 byte 3: bit 39 ~ bit 32 byte 4: bit 31 ~ bit 24 byte 5: bit 23 ~ bit 16 byte 6: bit 15 ~ bit 8 byte 7: bit 7 ~ bit 0参数
endianess描述了BINARY_DOUBLE的字节如何映射到RAW的字节,如下列矩阵所示。其中,rb0 ~ rb7指的是RAW中的字节,而db0 ~ db7指的是BINARY_DOUBLE中的字节。endianess rb0 rb1 rb2 rb3 rb4 rb5 rb6 rb7 big_endian db0 db1 db2 db3 db4 db5 db6 db7 little_endian db7 db6 db5 db4 db3 db2 db1 db0 对于
machine-endian,BINARY_DOUBLE参数的 8 个字节被直接复制到RAW返回值中。如果用户在大端机上传递了big_endian,或者在小端机上传递了little_endian,效果是一样的。
示例
obclient> SELECT UTL_RAW.CAST_FROM_BINARY_DOUBLE(10.234, 1) FROM DUAL;
+-------------------------------------------+
| UTL_RAW.CAST_FROM_BINARY_DOUBLE(10.234,1) |
+-------------------------------------------+
| 402477CED916872B |
+-------------------------------------------+
1 row in set
obclient> SELECT UTL_RAW.CAST_FROM_BINARY_DOUBLE(10.234, 2) FROM DUAL;
+-------------------------------------------+
| UTL_RAW.CAST_FROM_BINARY_DOUBLE(10.234,2) |
+-------------------------------------------+
| 2B8716D9CE772440 |
+-------------------------------------------+
1 row in set
obclient> SELECT UTL_RAW.CAST_FROM_BINARY_DOUBLE(10.234, 3) FROM DUAL;
+-------------------------------------------+
| UTL_RAW.CAST_FROM_BINARY_DOUBLE(10.234,3) |
+-------------------------------------------+
| 2B8716D9CE772440 |
+-------------------------------------------+
1 row in set
obclient> SELECT UTL_RAW.CAST_FROM_BINARY_DOUBLE(-10.234, 3) FROM DUAL;
+--------------------------------------------+
| UTL_RAW.CAST_FROM_BINARY_DOUBLE(-10.234,3) |
+--------------------------------------------+
| 2B8716D9CE7724C0 |
+--------------------------------------------+
1 row in set