Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / coalesce and boolean / 11 сообщений из 11, страница 1 из 1
22.06.2020, 12:33
    #39971785
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
coalesce and boolean
Вопрос: это нормально что нижеследующий запрос возвращает NULL?..

Firebird 3
Код: sql
1.
select coalesce(blocked, true) from managers where login = current_user


И этот тоже:
Код: sql
1.
select iif(blocked is null, true, blocked) from managers where login = current_user



И как мне тогда вернуть значение TRUE в случае отсутствия записи?..
...
Рейтинг: 0 / 0
22.06.2020, 12:39
    #39971789
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
coalesce and boolean
alekcvp,

а может он ничего не возвращает ?
...
Рейтинг: 0 / 0
22.06.2020, 12:41
    #39971792
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
coalesce and boolean
hvlad
alekcvp,
а может он ничего не возвращает ?

Хм... логично.
...
Рейтинг: 0 / 0
22.06.2020, 12:49
    #39971794
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
coalesce and boolean
alekcvp
Вопрос: это нормально что нижеследующий запрос возвращает NULL?..

Firebird 3
Код: sql
1.
select coalesce(blocked, true) from managers where login = current_user


И этот тоже:
Код: sql
1.
select iif(blocked is null, true, blocked) from managers where login = current_user



И как мне тогда вернуть значение TRUE в случае отсутствия записи?..

Привет.

Код: sql
1.
select coalesce( ( select blocked from managers where login = current_user ), true ) from rdb$database
...
Рейтинг: 0 / 0
22.06.2020, 14:15
    #39971834
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
coalesce and boolean
Polesov

Код: sql
1.
select coalesce( ( select blocked from managers where login = current_user ), true ) from rdb$database


Спасибо, у меня это в процедуре, поэтому я решил просто дальнейшее условие переписать на
Код: plsql
1.
if (blocked is distinct from false) then ... 

так работает.
...
Рейтинг: 0 / 0
22.06.2020, 17:20
    #39971933
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
coalesce and boolean
alekcvp

Спасибо, у меня это в процедуре, поэтому я решил просто дальнейшее условие переписать на
Код: plsql
1.
if (blocked is distinct from false) then ... 

так работает.

И какое присвоение после then ?
...
Рейтинг: 0 / 0
22.06.2020, 17:29
    #39971937
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
coalesce and boolean
alekcvp,

Просто сделай перед suspend (если нужно использование его в процедуре, то сразу после запроса):
blocked = coalesce(blocked, true)))
...
Рейтинг: 0 / 0
22.06.2020, 17:37
    #39971938
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
coalesce and boolean
alekcvp,

мой вариант

Код: sql
1.
select coalesce(max(blocked), true) from managers where login = current_user
...
Рейтинг: 0 / 0
22.06.2020, 18:54
    #39971988
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
coalesce and boolean
Polesov
alekcvp

Спасибо, у меня это в процедуре, поэтому я решил просто дальнейшее условие переписать на
Код: plsql
1.
if (blocked is distinct from false) then ... 

так работает.

И какое присвоение после then ?

Там exception.
...
Рейтинг: 0 / 0
22.06.2020, 19:02
    #39971994
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
coalesce and boolean
alekcvp
Polesov
пропущено...

И какое присвоение после then ?

Там exception.


На мой вкус, было бы нагляднее
Код: sql
1.
2.
  if ( not exists ( select * from managers where login = current_user and blocked = false ) ) then
    exception;
...
Рейтинг: 0 / 0
22.06.2020, 21:15
    #39972038
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
coalesce and boolean
Polesov,

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


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