首批通过分布式安全可靠测评,为关键业务系统打造
CAST_TO_BINARY_FLOAT
更新时间:2026-04-10 11:58:36
CAST_TO_BINARY_FLOAT 函数用于将以 RAW 二进制形式表示的 BINARY_FLOAT 值转换为 BINARY_FLOAT。
功能适用性
该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版仅提供 MySQL 模式。
语法
UTL_RAW.CAST_TO_BINARY_FLOAT (
r IN RAW
endianess IN PLS_INTEGER DEFAULT 1)
RETURN BINARY_FLOAT;
参数说明
| 参数 | 说明 |
|---|---|
| r | BINARY_FLOAT 的二进制表示形式。 |
| endianess | 表示 big_endian 或 little-endian 的 BINARY_INTEGER 值。默认值为 big_endian。 |
返回值
返回 BINARY_FLOAT 值。
使用说明
如果
RAW参数超过 4 个字节,则仅使用前 4 个字节,其余字节会被忽略。如果结果为-0,则返回+0。如果结果为NaN,则返回值为BINARY_FLOAT_NAN。如果
RAW参数小于 4 个字节,则会引发异常VALUE_ERROR。如下列表为一个 4 字节的
BINARY_FLOAT值与 IEEE 754 单精度格式的映射关系:byte 0: bit 31 ~ bit 24 byte 1: bit 23 ~ bit 16 byte 2: bit 15 ~ bit 8 byte 3: bit 7 ~ bit 0参数
endianess描述了BINARY_FLOAT的字节如何映射到RAW的字节,如下列矩阵所示。其中,rb0 ~ rb3指的是RAW中的字节,而fb0 ~ fb3指的是BINARY_FLOAT中的字节。Endianess rb0 rb1 rb2 rb3 big_endian fb0 fb1 fb2 fb3 little_endian fb3 fb2 fb1 fb0 对于
machine-endian,RAW参数的 4 个字节被直接复制到返回值BINARY_FLOAT中。如果用户在大端机上传递了big_endian,或者在小端机上传递了little_endian,效果是一样的。
示例
obclient> SELECT UTL_RAW.CAST_TO_BINARY_FLOAT('13579BD') FROM DUAL;
+-----------------------------------------+
| UTL_RAW.CAST_TO_BINARY_FLOAT('13579BD') |
+-----------------------------------------+
| 3.33317925E-038 |
+-----------------------------------------+
1 row in set
obclient> SELECT UTL_RAW.CAST_TO_BINARY_FLOAT('13579BD', 2) FROM DUAL;
+-------------------------------------------+
| UTL_RAW.CAST_TO_BINARY_FLOAT('13579BD',2) |
+-------------------------------------------+
| -6.08415641E-002 |
+-------------------------------------------+
1 row in set
obclient> SELECT UTL_RAW.CAST_TO_BINARY_FLOAT('13579BD', 3) FROM DUAL;
+-------------------------------------------+
| UTL_RAW.CAST_TO_BINARY_FLOAT('13579BD',3) |
+-------------------------------------------+
| -6.08415641E-002 |
+-------------------------------------------+
1 row in set