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 | big_endian または little-endian を表す BINARY_INTEGER 値。デフォルト値は 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のバイトを指します。Endianessrb0rb1rb2rb3big_endian fb0 fb1 fb2 fb3 little_endian 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