CAST_TO_BINARY_FLOAT関数は、RAWバイナリ形式で表されるBINARY_FLOAT値をBINARY_FLOATに変換するために使用されます。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
構文
UTL_RAW.CAST_TO_BINARY_FLOAT (
r IN RAW
endianess IN PLS_INTEGER DEFAULT 1)
RETURN BINARY_FLOAT;
パラメータの説明
| パラメータ | 説明 |
|---|---|
| r | BINARY_FLOAT のバイナリ表現。 |
| endianess | BINARY_INTEGER 値が big_endian または little-endian を表す。デフォルト値は 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内のバイトを指します。エンディアン rb0 rb1 rb2 rb3 ビッグエンディアン fb0 fb1 fb2 fb3 リトルエンディアン 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