CAST_FROM_BINARY_DOUBLE関数は、BINARY_DOUBLE値をRAWのバイナリ形式で返すために使用されます。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity Editionは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