C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Как работать с битами в InterBase
qwer115
  Отправлено: 09.08.2003, 11:17


Ученик-кочегар

Группа: Участник
Сообщений: 11



возможно ли организовать в InterBase работу с флагами (т.е. выборку, сортировку)?
например мне необходимо сохранять в таблице состояние 20 флагов. самым оптимальным вариантом было бы использовать поле типа integer и использовать его биты в качестве флагов, но каким образом осуществлять выборку? (например 5 флаг — 1; 17 — 0)
конечно можно испоьзовать 20 символьную строку. тогда все эти вещи без вопросов. но некрасиво и наверное медленно при большом количестве записей.
Admin
Отправлено: 09.08.2003, 11:52


Владимир

Группа: Администратор
Сообщений: 1190



Наверное можно так и сделать,
взять для этого поле типа int,
считывать из базы и записывать как обычное целое,
а обработку (битов) производить
средствами C++
qwer115
  Отправлено: 09.08.2003, 22:17


Ученик-кочегар

Группа: Участник
Сообщений: 11



вся фишка в том, что необходимо обрабатывать биты на уровне SQL т.е. организовать запросы типа:

select * from TableXXX
where 3 бит = 1 and 15 бит = 1 and 18 бит = 0

в случе еси для хранения использовать 20 символьную строку это будет
выглядеть

select * from TableXXX
where FLAG_FIELD like "__1___________1__0__"

где FLAG_FIELD -- CHAR(20)
LeeMouse
Отправлено: 04.09.2003, 11:57


Дежурный стрелочник

Группа: Участник
Сообщений: 79



Напиши UDF для этого. Которая будет принимать 2 числа и возвращать в качестве результата побитовое AND их. enjoy...

Вернуться в Работа с базами данных в C++Builder