Перейти к содержимому
Последнее обновление

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