The CAST_TO_BINARY_DOUBLE function converts a BINARY_DOUBLE value in the binary RAW representation into a BINARY_DOUBLE value.
Applicability
This topic applies only to OceanBase Database Enterprise Edition. OceanBase Database Community Edition provides only the MySQL mode.
Syntax
UTL_RAW.CAST_TO_BINARY_DOUBLE (
r IN RAW
endianess IN PLS_INTEGER DEFAULT 1)
RETURN BINARY_DOUBLE;
Parameters
| Parameter | Description |
|---|---|
| r | The binary representation of BINARY_DOUBLE. |
| endianess | The BINARY_INTEGER value that represents big_endian or little-endian. The default value is big_endian. |
Return values
A BINARY_DOUBLE value is returned.
Considerations
If the
RAWparameter exceeds 8 bytes in length, only the first 8 bytes are used and the remaining bytes are ignored. If the result is-0,+0is returned. If the result isNaN, the return value isBINARY_DOUBLE_NAN.If the
RAWparameter is less than 8 bytes in length, theVALUE_ERRORexception is thrown.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 theRAWparameter are copied directly into the returnBINARY_DOUBLEvalue. Passingbig_endianon a big-endian machine has the same effect as passinglittle_endianon a little-endian machine.
Examples
obclient> SELECT UTL_RAW.CAST_TO_BINARY_DOUBLE('0018FCFF18FCFFFF') FROM DUAL;
+---------------------------------------------------+
| UTL_RAW.CAST_TO_BINARY_DOUBLE('0018FCFF18FCFFFF') |
+---------------------------------------------------+
| 3.4750462962832636E-308 |
+---------------------------------------------------+
1 row in set
obclient> SELECT UTL_RAW.CAST_TO_BINARY_DOUBLE('0018FCFF18FCFFFF', 1) FROM DUAL;
+-----------------------------------------------------+
| UTL_RAW.CAST_TO_BINARY_DOUBLE('0018FCFF18FCFFFF',1) |
+-----------------------------------------------------+
| 3.4750462962832636E-308 |
+-----------------------------------------------------+
1 row in set
obclient> SELECT UTL_RAW.CAST_TO_BINARY_DOUBLE('0018FCFF18FCFFFF', 2) FROM DUAL;
+-----------------------------------------------------+
| UTL_RAW.CAST_TO_BINARY_DOUBLE('0018FCFF18FCFFFF',2) |
+-----------------------------------------------------+
| Nan |
+-----------------------------------------------------+
1 row in set
obclient> SELECT UTL_RAW.CAST_TO_BINARY_DOUBLE('0018FCFF18FCFFFF', 3) FROM DUAL;
+-----------------------------------------------------+
| UTL_RAW.CAST_TO_BINARY_DOUBLE('0018FCFF18FCFFFF',3) |
+-----------------------------------------------------+
| Nan |
+-----------------------------------------------------+
1 row in set