Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
02.10.2000, 11:09
|
|||
---|---|---|---|
|
|||
Побитовые операции подобно агрегатным функциям |
|||
#18+
Возможно ли над столбцом типа bit выполнить побитовую операцию "и" или "или" подобно агрегатным функциям, не используя курсоры? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.10.2000, 12:55
|
|||
---|---|---|---|
|
|||
Побитовые операции подобно агрегатным функциям |
|||
#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, 13:47
|
|||
---|---|---|---|
|
|||
Побитовые операции подобно агрегатным функциям |
|||
#18+
ОК, спасибо. Только можно, если не трудно примерчик выборки в пределах всей таблицы, использую BitColumn, а то я чего-то в хелпе ничего про этот BitColumn не нашел :( ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.10.2000, 13:49
|
|||
---|---|---|---|
|
|||
Побитовые операции подобно агрегатным функциям |
|||
#18+
Сорри, стормозил... Можно не писать пример. Воспринял это bitcolumn как ключевое слово сначала :))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.10.2000, 13:55
|
|||
---|---|---|---|
|
|||
Побитовые операции подобно агрегатным функциям |
|||
#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:57
|
|||
---|---|---|---|
|
|||
Побитовые операции подобно агрегатным функциям |
|||
#18+
Поздно, поезд ушел %) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
06.10.2000, 09:06
|
|||
---|---|---|---|
|
|||
Побитовые операции подобно агрегатным функциям |
|||
#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 ...... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=46&tablet=1&tid=1827686]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
143ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
others: | 233ms |
total: | 466ms |
0 / 0 |