SUB_BINARY
説明
SUB_BINARY関数は、VARBINARY値からバイナリ部分列を抽出します。抽出する開始位置とバイト長を指定できます。バイナリの最初のバイト位置は1です。
構文
sub_binary(<bin>, <pos> [, <len>])
パラメータ
| パラメータ | 説明 |
|---|---|
<bin> | ソースバイナリ値。型: VARBINARY |
<pos> | 開始バイト位置、負の値も可能。型: INT |
<len> | オプションパラメータ、抽出するバイト数。型: INT |
戻り値
VARBINARY型を返し、抽出されたバイナリサブシーケンスを表します。
特殊なケース:
- いずれかのパラメータがNULLの場合、NULLを返します。
- posが0の場合、空のバイナリを返します。
- posが負の場合、バイナリの末尾から逆向きに数えます。
- posがバイナリ長を超える場合、空のバイナリを返します。
- lenが指定されていない場合、posからバイナリの末尾までのすべてのバイトを返します。
例
- 基本的な使用方法(開始位置を指定)
SELECT sub_binary(x'61626331', 2);
+--------------------------------------------------------+
| sub_binary(x'61626331', 2) |
+--------------------------------------------------------+
| 0x626331 |
+--------------------------------------------------------+
- 負の位置の使用
SELECT sub_binary(x'61626331', -2);
+----------------------------------------------------------+
| sub_binary(x'61626331', -2) |
+----------------------------------------------------------+
| 0x6331 |
+----------------------------------------------------------+
- positionが0の場合
SELECT sub_binary(x'61626331', 0);
+--------------------------------------------------------+
| sub_binary(x'61626331', 0) |
+--------------------------------------------------------+
| 0x |
+--------------------------------------------------------+
- ポジションがバイナリ長を超過
SELECT sub_binary(x'61626331', 5);
+--------------------------------------------------------+
| sub_binary(x'61626331', 5) |
+--------------------------------------------------------+
| 0x |
+--------------------------------------------------------+
- length パラメータの指定
SELECT sub_binary(x'61626331646566', 2, 2);
+--------------------------------------------------------+
| sub_binary(x'61626331646566', 2, 2) |
+--------------------------------------------------------+
| 0x6263 |
+--------------------------------------------------------+