Значение заданного количества бит (GETBITS)

Функция

Получить значение заданного количества бит.

Спецификация
 
<​смещение байта​>::=
целое неотрицательное число
<​смещение бита​>::=
целое неотрицательное число
<​количество бит​>::=
целое положительное число
Синтаксические правила
  1. <​Смещение байта​> – целое неотрицательное число, задающее положение того байта в <​значимом выражении​>, в котором находится начало требуемой битовой последовательности. Смещение начинается с нуля.

  2. <​Смещение бита​> – целое неотрицательное число, задающее начало битовой последовательности относительно выбранного байта. Смещение начинается с нуля и задается в количестве бит. <​Смещение бита​> – значение из диапазона 0-7.

  3. <​Количество бит​> – целое положительное значение в диапазоне от 1 до 32, задающее количество выбираемых бит.

  4. Тип <​значимого выражения​> не проверяется.

  5. Все аргументы функции могут быть заданы <​SQL-параметром​>, который должен содержать спецификацию типа данных параметра.

    select GETBITS (? (byte(10)), :param (int), ? (smallint), ? (int));
    0145ac77ff
    2
    3
    8
    |        245|

Возвращаемое значение
  1. Значение указанной битовой последовательности. Тип возвращаемого значения – INT.

  2. Если аргумент NULL, возвращается NULL.

  3. Если задано недопустимое смещение, фиксируется исключительная ситуация.

Пример
GETBITS (hex('01450affcd02'), 2, 3, 8)

Результатом будет строка бит: 01010111(см. пояснение ниже).

Исходное значение000000010100010100001010111111111100110100000010
Смещение байта012345
Смещение бита  0123   
Результат000000010100010100001010111111111100110100000010

Столбец $$$S14 первой строки системной таблицы $$$SYSRL содержит структуру, описывающую параметры настройки СУБД. Необходимо узнать версию БД (значение находится в структуре со смещением 65 байт).

select getbits($$$s14,65,0,7) from $$$sysrl where rowid=1;