|
Побитовые операции подобно агрегатным функциям
|
|||
---|---|---|---|
#18+
Возможно ли над столбцом типа bit выполнить побитовую операцию "и" или "или" подобно агрегатным функциям, не используя курсоры? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2000, 11:09 |
|
Побитовые операции подобно агрегатным функциям
|
|||
---|---|---|---|
#18+
Вообще-то, если требуется просто узнать значение такой операции над стобцом в пределах всей! таблицы, то достаточно сделать выборку с условием BitColumn=0 для "И" и BitColumn=1 для "ИЛИ". Если же требуется именно агрегатная функция с группировкой, то можно предложить такой извращенный способ: Для И - select case when count(case BitColumn when 0 then 1 else NULL end)>0 then 0 else 1 end from ...... Для ИЛИ аналогично - select case when count(case BitColumn when 1 then 1 else NULL end)>0 then 0 else 1 end from ...... Только не нужно забывать о том, что в 7.0 битовые столбцы могут содержать значения NULL ;) На них наша "булева алгебра" зуб-то и сломает. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2000, 12:55 |
|
Побитовые операции подобно агрегатным функциям
|
|||
---|---|---|---|
#18+
ОК, спасибо. Только можно, если не трудно примерчик выборки в пределах всей таблицы, использую BitColumn, а то я чего-то в хелпе ничего про этот BitColumn не нашел :( ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2000, 13:47 |
|
Побитовые операции подобно агрегатным функциям
|
|||
---|---|---|---|
#18+
Сорри, стормозил... Можно не писать пример. Воспринял это bitcolumn как ключевое слово сначала :))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2000, 13:49 |
|
Побитовые операции подобно агрегатным функциям
|
|||
---|---|---|---|
#18+
BitColumn - это просто название столбца для примера. Вместо него надо подставлять название своего битового столбца. Пусть тогда уж BitTable - это название таблицы для примера (подставляем свое! :). Тогда получаем: select OR_value=case when count(*)>0 then 1 else 0 end from BitTable where BitColumn=1 select AND_value=case when count(*)>0 then 0 else 1 end from BitTable where BitColumn=0 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2000, 13:55 |
|
Побитовые операции подобно агрегатным функциям
|
|||
---|---|---|---|
#18+
Поздно, поезд ушел %) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2000, 13:57 |
|
Побитовые операции подобно агрегатным функциям
|
|||
---|---|---|---|
#18+
2Olga: Небольшой недочет в первом ответе. Там надо так: Для ИЛИ аналогично - select case when count(case BitColumn when 1 then 1 else NULL end)>0 then <b>1</b> else <b>0</b> end from ...... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2000, 09:06 |
|
|
start [/forum/topic.php?fid=46&fpage=3599&tid=1827686]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 171ms |
0 / 0 |