跳到主要内容

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 |
+--------------------------------------------------------+