The CAST_FROM_BINARY_DOUBLE function returns a BINARY_DOUBLE value in RAW binary format.
Applicability
This topic applies only to OceanBase Database Enterprise Edition. OceanBase Database Community Edition does not support this function.
Syntax
UTL_RAW.CAST_FROM_BINARY_DOUBLE(
n IN BINARY_DOUBLE,
endianess IN PLS_INTEGER DEFAULT 1)
RETURN RAW;
Parameters
| Parameter | Description |
|---|---|
| n | The BINARY_DOUBLE value. |
| endianess | A BINARY_INTEGER value that specifies the byte order. The function recognizes the following defined constants:
big_endian. When machine_endian is specified, the result is the same as when big_endian is specified on a big-endian system or little_endian is specified on a little-endian system. |
Return value
The binary representation of the BINARY_DOUBLE value in RAW format.
Considerations
The following table shows the mapping between an 8-byte
BINARY_DOUBLEvalue and the IEEE 754 double-precision format: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 0The
endianessparameter specifies how the bytes of theBINARY_DOUBLEvalue are mapped to the bytes of theRAWvalue, as shown in the following matrix. In this matrix,rb0torb7represent the bytes in theRAWvalue, anddb0todb7represent the bytes in theBINARY_DOUBLEvalue.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 For
machine_endian, the 8 bytes of theBINARY_DOUBLEparameter are directly copied to theRAWreturn value. If you specifybig_endianon a big-endian system orlittle_endianon a little-endian system, the result is the same.
Examples
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
