Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Оператор CASE / 10 сообщений из 10, страница 1 из 1
10.05.2020, 13:04
    #39955662
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оператор CASE
Пишу
Код: sql
1.
2.
3.
4.
5.
A = case
        when ..... then .....
        when ..... then .....
        when ..... then .....
      end;



ожидал что CASE без указания ELSE работает как вот такой набор ифов
Код: sql
1.
2.
3.
4.
  if .... then ...
  else if .... then ...
.....
  else if .... then ...



а оказалось что работает вот так
Код: sql
1.
2.
3.
4.
5.
  if .... then ...
  else if .... then ...
.....
  else if .... then ...
  else null



Просто интересно почему именно так реализовано
...
Рейтинг: 0 / 0
10.05.2020, 13:07
    #39955663
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оператор CASE
m7mа оказалось

Спрашивать почему ты ожидал, что поведение оператора будет отличаться от того, что написано в документации не буду. Но чисто из любопытства: как ты эти случаи различил?
...
Рейтинг: 0 / 0
10.05.2020, 13:19
    #39955667
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оператор CASE
m7m,

CASE это выражение, которое обязано возвращать какое-то значение, а не просто удобная запись if then elseif
...
Рейтинг: 0 / 0
10.05.2020, 13:48
    #39955671
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оператор CASE
Dimitry Sibiryakov
m7mа оказалось
... Но чисто из любопытства: как ты эти случаи различил?
Ну так в хранимке то и проблем нет увидеть различия
...
Рейтинг: 0 / 0
10.05.2020, 13:49
    #39955673
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оператор CASE
Симонов Денис
m7m,

CASE это выражение, которое обязано возвращать какое-то значение, а не просто удобная запись if then elseif

Ну значит в этом и было мое заблуждение
...
Рейтинг: 0 / 0
10.05.2020, 14:48
    #39955687
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оператор CASE
m7m
Просто интересно почему именно так реализовано
Потому что не допускает неопределённого поведения.
...
Рейтинг: 0 / 0
11.05.2020, 06:49
    #39955807
fraks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оператор CASE
Я собственно не понял, а что ты ожидал получить на выходе case если ты не задал соответствия такому значению?
...
Рейтинг: 0 / 0
11.05.2020, 07:58
    #39955810
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оператор CASE
fraks
Я собственно не понял, а что ты ожидал получить на выходе case если ты не задал соответствия такому значению?

Ничего, просто ничего.
Ожидал что значение переменной в левой части присваивания не изменится.
...
Рейтинг: 0 / 0
13.05.2020, 02:02
    #39956608
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оператор CASE
А я правильно понимаю, что если сделать
Код: sql
1.
2.
3.
4.
case 
  when f1 is null then x 
  when f2 is null then y
end

то, в случае когда оба поля null, результат будет x, а если ни одно из них, то null?
...
Рейтинг: 0 / 0
13.05.2020, 02:22
    #39956610
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оператор CASE
alekcvp,

А самому проверить?))?
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Оператор CASE / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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