powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Побитовые операции подобно агрегатным функциям
7 сообщений из 7, страница 1 из 1
Побитовые операции подобно агрегатным функциям
    #32000320
Vasily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно ли над столбцом типа bit выполнить побитовую операцию "и" или "или" подобно агрегатным функциям, не используя курсоры?
...
Рейтинг: 0 / 0
Побитовые операции подобно агрегатным функциям
    #32000321
Ольга
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообще-то, если требуется просто узнать значение такой операции над стобцом в пределах всей! таблицы, то достаточно сделать выборку с условием 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 ;) На них наша "булева алгебра" зуб-то и сломает.
...
Рейтинг: 0 / 0
Побитовые операции подобно агрегатным функциям
    #32000323
Vasily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОК, спасибо.

Только можно, если не трудно примерчик выборки в пределах всей таблицы, использую BitColumn, а то я чего-то в хелпе ничего про этот BitColumn не нашел :(
...
Рейтинг: 0 / 0
Побитовые операции подобно агрегатным функциям
    #32000324
Vasily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри, стормозил...
Можно не писать пример. Воспринял это bitcolumn как ключевое слово сначала :)))))
...
Рейтинг: 0 / 0
Побитовые операции подобно агрегатным функциям
    #32000325
Ольга
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
...
Рейтинг: 0 / 0
Побитовые операции подобно агрегатным функциям
    #32000326
Ольга
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поздно, поезд ушел %)
...
Рейтинг: 0 / 0
Побитовые операции подобно агрегатным функциям
    #32000379
Vasily
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 ......
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Побитовые операции подобно агрегатным функциям
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]