The CAST_FROM_BINARY_DOUBLE function returns a BINARY_DOUBLE value in the binary RAW representation.
Applicability
This topic applies only to OceanBase Database Enterprise Edition. OceanBase Database Community Edition provides only the MySQL mode.
Syntax
UTL_RAW.CAST_FROM_BINARY_DOUBLE(
n IN BINARY_DOUBLE,
endianess IN PLS_INTEGER DEFAULT 1)
RETURN RAW;
Parameters
| Parameter | Description |
|---|---|
| n | A BINARY_DOUBLE value. |
| endianess | A BINARY_INTEGER value that indicates the byte order. The defined constants that this function can recognize are as follows:
big_endian. The setting of machine_endian has the same effect as big_endian on a big-endian machine, or has the same effect as little_endian on a little-endian machine. |
Return values
The binary representation (RAW) of a BINARY_DOUBLE value is returned.
Considerations
The following list 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 describes howBINARY_DOUBLEbytes are mapped toRAWbytes, as shown in the following matrix.rb0–rb7are theRAWbytes, anddb0–db7are theBINARY_DOUBLEbytes.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 copied directly into the returnRAWvalue. Passingbig_endianon a big-endian machine has the same effect as passinglittle_endianon a little-endian machine.
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