powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / group by
11 сообщений из 36, страница 2 из 2
group by
    #39626101
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch((что угодно) = NULL ) = FALSE
у меня получается
((что угодно) = NULL ) = NULL
...
Рейтинг: 0 / 0
group by
    #39626102
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcociв эту ветку не входит, когда s.bundle_id not null
Код: sql
1.
2.
  case s.bundle_id
    when (not null) then 10




КМК, это если развернуть в полную форму будет

Код: sql
1.
2.
  case 
    when s.bundle_id = null then 10



not TRUE = FALSE
2 + 1 = 3

not NULL = NULL
NULL + 1 = NULL

((что угодно) = NULL ) = FALSE

подозреваю, но проверять лень, что
( NULL = NULL ) = NULL ~~~~>>> FALSE
если принудительно поднимать тип к boolean not null , что скорее всего и проиcходит внутри IF/WHILE/CASE

в то же время
(NULL is not distinct from NULL ) = TRUE

Но внутри CASE видимо обычный старый добрый = для сравнения
...
Рейтинг: 0 / 0
group by
    #39626105
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да.. может он явно через оператор "=" проверяет, поэтому и спросил
when (is not null) не принимает. нужно sql стандарт посмотреть как там :)
...
Рейтинг: 0 / 0
group by
    #39626107
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockArioch((что угодно) = NULL ) = FALSE
у меня получается
((что угодно) = NULL ) = NULL

Это я второпях писал, я имел ввиду при принудительном преобразовании типаа

Ниже я это описал.... в одном случае из двух, в первый добавить примечание забыл.

>_<
...
Рейтинг: 0 / 0
group by
    #39626109
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladА второй у нас не поддерживается синтаксисом, можно попросить поддержать.
Мне кажется достаточно в том виде, в котором поддерживается:
case when <expr> is [not] null then ... end
...
Рейтинг: 0 / 0
group by
    #39626111
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcociда.. может он явно через оператор "=" проверяет, поэтому и спросил
when (is not null) не принимает. нужно sql стандарт посмотреть как там :)

Так он никогда и не будет принимать.

Скобки заставляют вычислять выражение.
Это аналогично переменным в процедуре.
Код: sql
1.
X = (is not null);


Это что? Это бессмыслица.

Если синтаксис когда-нибудь будет это принимать - то только БЕЗ скобок.

PS. ну а пока видимо придётся выпендриваться через "волшебные числа"
Код: sql
1.
case coalesce(s.bundle_id, 12345654321) .... 
...
Рейтинг: 0 / 0
group by
    #39626113
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да.. здесь мой промах, сорри )
...
Рейтинг: 0 / 0
group by
    #39626124
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockhvladА второй у нас не поддерживается синтаксисом, можно попросить поддержать.
Мне кажется достаточно в том виде, в котором поддерживается:
case when <expr> is [not] null then ... endА если 3-х этажный <expr> нужно протестировать на null и ещё на десяток значений ?
Везде повторять написание <expr> ?
Да, derived tables или CTE помогут это обойти, но если там и так каскад вложенных селектов ? :)

Фича не убийственно нужная, согласен. Но с ней лучше, чем без неё. Хотя можно и обойтись
...
Рейтинг: 0 / 0
group by
    #39626126
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcociнужно sql стандарт посмотреть как там :)Я уже вкратце написал, как там.
Или дать полную цитату ? Там многа букав (ц) :)
...
Рейтинг: 0 / 0
group by
    #39626128
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
даешь тупли и pattern matching в SQL CASE DDDD
...
Рейтинг: 0 / 0
group by
    #39626132
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladА если 3-х этажный <expr> нужно протестировать на null и ещё на десяток значений ?
Нет, разбить на два:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
  CASE <expr> IS NULL
    WHEN TRUE THEN <res_null>
    ELSE CASE <expr>
      WHEN <value1> THEN <res_1>
      WHEN <value2> THEN <res_2>
      WHEN <value3> THEN <res_3>
      ELSE <res_unk>
    END
  END
...
Рейтинг: 0 / 0
11 сообщений из 36, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / group by
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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