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