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

Функция

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

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

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

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

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

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

    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;