Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Суммирование поля типа bool 
V
    Опции темы
lightforever
Дата 11.3.2010, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 4.9.2009

Репутация: нет
Всего: нет



Как просуммировать в столбце значения типа bool?
PM MAIL   Вверх
Akina
Дата 11.3.2010, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Да? а что получится, к примеру, если сложить 2*True+3*False? И главное - почему?
Бред какой-то...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
tusha
Дата 11.3.2010, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 17.7.2008

Репутация: 1
Всего: 1



Код

declare @x as bit
set @x=0
select @x+1

однако это возможно изза того, что бит это посути урезаный инт.
может имелось ввиду булева алгебра?  smile 
PM MAIL   Вверх
Invisible_kid
Дата 11.3.2010, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 2.9.2007

Репутация: нет
Всего: 3



Цитата(Akina @  11.3.2010,  11:02 Найти цитируемый пост)
Да? а что получится, к примеру, если сложить 2*True+3*False? И главное - почему?

подобная операция полагаю вернула бы 2 smile

з.ы.: то что бред согласенsmile

Это сообщение отредактировал(а) Invisible_kid - 11.3.2010, 13:49
PM MAIL   Вверх
Akina
Дата 11.3.2010, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(Invisible_kid @  11.3.2010,  14:48 Найти цитируемый пост)
подобная операция полагаю вернула бы 2

Это неверный ответ.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Invisible_kid
Дата 11.3.2010, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 2.9.2007

Репутация: нет
Всего: 3



Цитата(Akina @  11.3.2010,  13:55 Найти цитируемый пост)
Это неверный ответ. 

ну тогда смотря гдеsmile
PM MAIL   Вверх
tusha
Дата 11.3.2010, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 17.7.2008

Репутация: 1
Всего: 1



Код

declare @x as bit, @y as bit
select @x=1, @y=0 // TRUE , FALSE
select CONVERT(bit, 3*convert(tinyint,@x)+2*CONVERT(tinyint,@y))


результат = 1 т.е. TRUE
 smile 

Это сообщение отредактировал(а) tusha - 11.3.2010, 14:19
PM MAIL   Вверх
Invisible_kid
Дата 11.3.2010, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 2.9.2007

Репутация: нет
Всего: 3



Цитата(tusha @  11.3.2010,  14:17 Найти цитируемый пост)
результат = 1 т.е. TRUE

а вдруг хочется не булевый результат? smile 


PM MAIL   Вверх
tusha
Дата 11.3.2010, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 17.7.2008

Репутация: 1
Всего: 1



имхо, как правильно сказал тов. Akina, арифметические операции над булевыми типами это бред
PM MAIL   Вверх
Invisible_kid
Дата 11.3.2010, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 2.9.2007

Репутация: нет
Всего: 3



и в самом делеsmile хватит дурью маятсяsmile
PM MAIL   Вверх
Akina
Дата 11.3.2010, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(Invisible_kid @  11.3.2010,  15:15 Найти цитируемый пост)
ну тогда смотря где 

Не поленись посмотреть, в какой форме хранятся True и False. Для любого языка, СУБД и пр. Выяснится, что ВЕЗДЕ твой ответ неверен.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Invisible_kid
Дата 11.3.2010, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 2.9.2007

Репутация: нет
Всего: 3



я к тому что в тех же сях true/false могут восприниматься как 1/0 [и соответственно есть возможность использовать булевые результаты в математических выражениях]

не поленился:
билдер скушал следующий кусочек за милу душу:
Код

int i;
i = 2*true + 3*false;

и результатом вернул "2"

Это сообщение отредактировал(а) Invisible_kid - 11.3.2010, 21:17
PM MAIL   Вверх
Akina
Дата 11.3.2010, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(Invisible_kid @  11.3.2010,  21:32 Найти цитируемый пост)
в тех же сях true/false могут восприниматься как 1/0 

В данном случае выполняется неявное преобразование true в единицу. Тебе просто повезло. Ибо по классике true AND x = x и false AND x = false, откуда следует, что у false все биты нулевые, а у true единичные (т.е. при интерпретации как int получается не единица, а минус единица). Такое преобразование может запросто оказать программисту "медвежью услугу".


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Invisible_kid
Дата 11.3.2010, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 2.9.2007

Репутация: нет
Всего: 3



то что неявно преобразуются это понятно, 
я и говорю что просто есть такая возможность, а вот что пользоваться этим в определенных условиях может оказаться опасным это другое дело
PM MAIL   Вверх
Zloxa
Дата 12.3.2010, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Akina @  11.3.2010,  21:42 Найти цитируемый пост)
откуда следует

ну.... не совсем следует.... либо даже вовсе не следует.
Логический And и побитовый and это разные операциии. А в том же Цэ, они и кодируются по разному. & vs && smile 


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1254 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.