Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Деление на 0 в CASE (число прочтений - 5519 )
Rubin
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 70
Зарегистрирован: 31. Июля 2007
Деление на 0 в CASE
21. Августа 2007 :: 12:22
Печать  
Может кто подскажет, как реализовать вещь:

CASE WHEN (A+B)/C > 0 THEN 1 ELSE 0

где C может быть равна 0...
  
Наверх
 
IP записан
 
Scorpion
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 32
Местоположение: Киев
Зарегистрирован: 05. Июня 2006
Пол: Мужской
Re: Деление на 0 в CASE
Ответ #1 - 21. Августа 2007 :: 12:34
Печать  
case
  when c=0 then ...
  else
     CASE
       WHEN (A+B)/C > 0 THEN 1
       ELSE 0
  end
end
  
Наверх
 
IP записан
 
Rubin
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 70
Зарегистрирован: 31. Июля 2007
Re: Деление на 0 в CASE
Ответ #2 - 21. Августа 2007 :: 12:39
Печать  
Спасибо, получилось.  Улыбка
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Деление на 0 в CASE
Ответ #3 - 21. Августа 2007 :: 12:47
Печать  
A, B и C могут быть отрицательными ?
если нет, то решение может быть чуть-чуть интереснее
  

1&&2&&3
Наверх
 
IP записан
 
Rubin
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 70
Зарегистрирован: 31. Июля 2007
Re: Деление на 0 в CASE
Ответ #4 - 22. Августа 2007 :: 11:33
Печать  
trad писал(а) 21. Августа 2007 :: 12:47:
A, B и C могут быть отрицательными ?
если нет, то решение может быть чуть-чуть интереснее


На самом деле условие такое 1-(Стоимость+НДС)/Оборот Улыбка
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Деление на 0 в CASE
Ответ #5 - 22. Августа 2007 :: 11:42
Печать  
выбирай:
1-isnull((Стоимость+НДС)/nullif(Оборот,0),1)
или
1-isnull((Стоимость+НДС)/nullif(Оборот,0),0)
  

1&&2&&3
Наверх
 
IP записан
 
Rubin
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 70
Зарегистрирован: 31. Июля 2007
Re: Деление на 0 в CASE
Ответ #6 - 23. Августа 2007 :: 06:13
Печать  
Подскажите, пожалуйста ещё, как можно выполнить сравнение с учётом регистра? Отчего-то функция BINARY ни за что работать не хочет ((( (Запрос для SQL сервера)
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Деление на 0 в CASE
Ответ #7 - 23. Августа 2007 :: 06:21
Печать  
ф-ия UPPER преобразовывает строку к верхнему регистру, LOWER - к нижнему. Полезен будет Краткий справочник по Transact SQL
  
Наверх
 
IP записан
 
Rubin
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 70
Зарегистрирован: 31. Июля 2007
Re: Деление на 0 в CASE
Ответ #8 - 23. Августа 2007 :: 06:23
Печать  
Есть сравнение 'a' = 'A'. В таком случае естественно возвращается 1, а мне надо, что бы 0 вернулось.. В книжке написано использовать BINARY 'a' = 'A', но у меня сервак на это дело матерится ((
  
Наверх
 
IP записан
 
Rubin
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 70
Зарегистрирован: 31. Июля 2007
Re: Деление на 0 в CASE
Ответ #9 - 23. Августа 2007 :: 06:24
Печать  
спасибо за ссылку, кста Улыбка
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Деление на 0 в CASE
Ответ #10 - 23. Августа 2007 :: 06:28
Печать  
Rubin
Он говорит что нет такой функции и он прав, потому что BINARY это не функция, а тип.
  
Наверх
ICQ  
IP записан
 
Rubin
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 70
Зарегистрирован: 31. Июля 2007
Re: Деление на 0 в CASE
Ответ #11 - 23. Августа 2007 :: 06:32
Печать  
Ну так суть вопроса-то не меняется Улыбка Есть какие-нибудь аналоги преобразования в двоичную строку вместо BINARY
  
Наверх
 
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Деление на 0 в CASE
Ответ #12 - 23. Августа 2007 :: 06:42
Печать  
cast('a' as binary) = cast('A' as binary)
  
Наверх
ICQ  
IP записан
 
Rubin
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 70
Зарегистрирован: 31. Июля 2007
Re: Деление на 0 в CASE
Ответ #13 - 23. Августа 2007 :: 06:43
Печать  
спасибо Улыбка
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Деление на 0 в CASE
Ответ #14 - 23. Августа 2007 :: 07:37
Печать  
'a' COLLATE Cyrillic_General_BIN = 'A' COLLATE Cyrillic_General_BIN
а точнее
'a' COLLATE Cyrillic_General_CS_AS = 'A' COLLATE Cyrillic_General_CS_AS
  

1&&2&&3
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать