powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Оператор CASE
10 сообщений из 10, страница 1 из 1
Оператор CASE
    #39955662
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу
Код: 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
Оператор CASE
    #39955663
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mа оказалось

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

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

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

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

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

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

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


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