powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / coalesce and boolean
11 сообщений из 11, страница 1 из 1
coalesce and boolean
    #39971785
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 в случае отсутствия записи?..
...
Рейтинг: 0 / 0
coalesce and boolean
    #39971789
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

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

Хм... логично.
...
Рейтинг: 0 / 0
coalesce and boolean
    #39971794
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
coalesce and boolean
    #39971834
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
coalesce and boolean
    #39971933
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp

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

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

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

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

мой вариант

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

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

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

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

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

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

Там exception.


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

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


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