Страница 1 из 1

Делюсь трюком

Добавлено: 29 авг 2007, 07:59
Heimdallr
Добрый день. Хочу поделиться фичей, которую недавно открыл для себя.

В ХП часто видел (и сам писал) последовательность кода типа:

caption=null;
select c.caption from catalog c where c.id=:id into :caption;
if(caption is null) then caption='unknown';

Вместо этого можно написать:

select coalesce(c.caption, 'unknown') from catalog c
right join rdb$database on c.id=:id
into :catalog;

Прошу прощения за отнятое время у тех, для кого подобный трюк
самоочевиден, но для кого-то из новичков этот прием может оказаться
полезным. И особенно будут полезны последующие комментарии гуру.

Добавлено: 29 авг 2007, 11:19
kdv
конечно последуют. а если в базе есть запись, где caption is null ?
и вообще, imho на coalesce оргазмируют обычно те, кто с null или запутался или непродумал структуру БД.

Добавлено: 29 авг 2007, 12:00
WildSery

Код: Выделить всё

caption = 'unknown';
select caption from catalog where id=:id and caption is not null into caption;

Добавлено: 29 авг 2007, 12:28
Heimdallr
Если есть запись с caption is null, то и получим тот же 'unknown', так ведь? Это может быть правильным или нет, в зависимости от контекста.
А еще оргазмировать на coalesce приходится тем, кому нужно продолжать развитие проекта сколько-нибудь значительного размера.

Добавлено: 29 авг 2007, 12:32
WildSery
Heimdallr писал(а):А еще оргазмировать на coalesce приходится тем, кому нужно продолжать развитие проекта сколько-нибудь значительного размера.
Ещё ни разу не использовал.
Проектами мерятся не будем? :D
Хотя, конечно, функция нужная, иногда.