Последнее обновление
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 |
+--------------------------------------------------------+