メインコンテンツまでスキップ
に最終更新

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 からバイナリの末尾までのすべてのバイトを返します。

例​

  1. 基本的な使い方(開始位置を指定)
SELECT sub_binary(x'61626331', 2);
+--------------------------------------------------------+
| sub_binary(x'61626331', 2) |
+--------------------------------------------------------+
| 0x626331 |
+--------------------------------------------------------+
  1. 負の位置を指定
SELECT sub_binary(x'61626331', -2);
+----------------------------------------------------------+
| sub_binary(x'61626331', -2) |
+----------------------------------------------------------+
| 0x6331 |
+----------------------------------------------------------+
  1. 位置が 0 の場合
SELECT sub_binary(x'61626331', 0);
+--------------------------------------------------------+
| sub_binary(x'61626331', 0) |
+--------------------------------------------------------+
| 0x |
+--------------------------------------------------------+
  1. 位置がバイナリの長さを超える場合
SELECT sub_binary(x'61626331', 5);
+--------------------------------------------------------+
| sub_binary(x'61626331', 5) |
+--------------------------------------------------------+
| 0x |
+--------------------------------------------------------+
  1. 長さを指定
SELECT sub_binary(x'61626331646566', 2, 2);
+--------------------------------------------------------+
| sub_binary(x'61626331646566', 2, 2) |
+--------------------------------------------------------+
| 0x6263 |
+--------------------------------------------------------+