Значение заданного количества бит (GETBITS)
Функция
Получить значение заданного количества бит.
Спецификация
::=::=::=::=Синтаксические правила
-
<Смещение байта>– целое неотрицательное число, задающее положение того байта в<значимом выражении>, в котором находится начало требуемой битовой последовательности. Смещение начинается с нуля. -
<Смещение бита>– целое неотрицательное число, задающее начало битовой последовательности относительно выбранного байта. Смещение начинается с нуля и задается в количестве бит.<Смещение бита>– значение из диапазона 0-7. -
<Количество бит>– целое положительное значение в диапазоне от 1 до 32, задающее количество выбираемых бит. -
Тип
<значимого выражения>не проверяется. -
Все аргументы функции могут быть заданы
<SQL-параметром>, который должен содержать спецификацию типа данных параметра.select GETBITS (? (byte(10)), :param (int), ? (smallint), ? (int)); 0145ac77ff 2 3 8 | 245|
Возвращаемое значение
-
Значение указанной битовой последовательности. Тип возвращаемого значения –
INT. -
Если аргумент
NULL, возвращаетсяNULL. -
Если задано недопустимое смещение, фиксируется исключительная ситуация.
Пример
GETBITS (hex('01450affcd02'), 2, 3, 8)
Результатом будет строка бит: 01010111(см. пояснение ниже).
| Исходное значение | 00000001 | 01000101 | 00001010 | 11111111 | 11001101 | 00000010 |
| Смещение байта | 0 | 1 | 2 | 3 | 4 | 5 |
| Смещение бита | 0123 | |||||
| Результат | 00000001 | 01000101 | 00001010 | 11111111 | 11001101 | 00000010 |
Столбец $$$S14 первой строки системной таблицы $$$SYSRL содержит структуру, описывающую параметры настройки СУБД. Необходимо узнать версию БД (значение находится в структуре со смещением 65 байт).
select getbits($$$s14,65,0,7) from $$$sysrl where rowid=1;