に最終更新
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 |
+----------------------------------------------------------+
- 位置が 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 |
+--------------------------------------------------------+
- 長さを指定
SELECT sub_binary(x'61626331646566', 2, 2);
+--------------------------------------------------------+
| sub_binary(x'61626331646566', 2, 2) |
+--------------------------------------------------------+
| 0x6263 |
+--------------------------------------------------------+