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