Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2011, 21:00   #1
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию Не работает CASE для NULL в выборке из view (скриншот внутри

Код:
mysql> SELECT 
item_id,
CASE incount WHEN NULL THEN "NONE" ELSE incount END,
CASE outcount WHEN NULL THEN "NONE" ELSE outcount END
FROM resultviewbackend;
+---------+-----------------------------------------------------+-------------------------------------------------------+
| item_id | CASE incount WHEN NULL THEN "NONE" ELSE incount END | CASE outcount WHEN NULL THEN "NONE" ELSE outcount END |
+---------+-----------------------------------------------------+-------------------------------------------------------+
|       1 | NULL                                                | NULL                                                  |
|       2 | 7.5                                                 | NULL                                                  |
|       3 | 15                                                  | NULL                                                  |
Если это важно: выборка значений incount и outcount создается из запросов с sum-groupby и естественно не для всех записей есть результат отличный от нуля, так как по сути выборка идет из лога.

Как собственно с этим бороться? Почему CASE не заменяет NULL на NONE? Причем, кстати, нет реакции именно на значение NULL, на другие значения реакция есть.
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Старый 12.04.2011, 21:13   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Обычно проверка на NULL это: incount IS NULL. MySQL не знаю, но возможно сработает так:

CASE WHEN incount IS NULL THEN "NONE" ELSE incount END,
или
CASE incount WHEN IS NULL THEN "NONE" ELSE incount END,
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.04.2011, 22:16   #3
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

Собственно, заменил CASE на if(incount IS NULL, 0.0,incount) и все заработало.
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Может ли бот сделать скриншот незаметно для клиента? amakl Софт 10 13.01.2011 13:02
case для строк Sanek_ntsk Общие вопросы Delphi 5 23.03.2010 17:42
CreateCompatibleDC(NULL) - для какого HDC создаётся compatible DC butterflight Win Api 9 16.06.2009 21:19
operator= для NULL Selebro Общие вопросы C/C++ 2 14.12.2008 16:29
Конструкция case of работает некорректно! Как исправить? SkAndrew Общие вопросы Delphi 6 06.04.2008 00:21