Форум: "Базы";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
Вниз
SQL функция IIF Найти похожие ветки
← →
DancerMan © (2006-09-27 12:01) [0]Добрый день!
Мне нужна SQL фукция IIF, использующаяся во многих SQL-серверах. Хочу написать UDF. Что-то типа такого
function IIF(cond: boolean; var var1, var2: variant): variant; cdecl; export;
begin
if( cond=true ) then
Result:=var1
else
Result:=var2;
end;
Проблема в том, что в FB нет типа boolean.
Подскажите, как лучше написать функцию IIF?
← →
dr Gonzo © (2006-09-27 12:12) [1]С boolean в IB обычно работают через домен, например его можно реализовать примерно так:
CREATE DOMAIN DM_BOOLAS
SMALLINT
NOT NULL
CHECK ((VALUE IS NULL) OR (VALUE IN (0, 1)))
← →
DancerMan © (2006-09-27 12:26) [2]
> dr Gonzo ©
Я думаю, в моем случае это не поможет.
Например, я пишу iif(field1>field2,field1,0). Как мне описать, что б выражение
field1>field2 возвращало 1 или 0
← →
Danilka © (2006-09-27 12:33) [3]см документацию по FB1.5, если не ошибаюсь, там есть такое: case when ... then ... else ... end
← →
dr Gonzo © (2006-09-27 12:34) [4]CAST
← →
DancerMan © (2006-09-27 12:46) [5]
> Danilka ©
про case я знаю, спасибо.
Нужен iif. В плане синтаксиса проще. Что-нибудь вложенное с case заморишься писать, если вообще напишешь.
← →
Johnmen © (2006-09-27 12:56) [6]
> DancerMan ©
Чем CASE сложнее IIF?
← →
DancerMan © (2006-09-27 13:16) [7]
> Чем CASE сложнее IIF?
Даже если для такого простого условия второй вариант и допустим, то для меня первый - понятней
1. iif(f1>f2, iif(f3>f4,1,0), iif(f5>f6,1,0) )
2. case when f1>f2 then
case when f3>f4 then 1 else 0
end
else
case when f5>f6 then 1 else 0
end
end
Вообщем, у меня задача реализовать UDF для IIF.
← →
Johnmen © (2006-09-27 13:42) [8]
> Вообщем, у меня задача реализовать UDF для IIF.
Возьми готовую (IIF), из библиотеки RFunc. Там и реализацию можешь глянуть...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.034 c