Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
15-1162749340
Kerk
2006-11-05 20:55
2006.11.26
Глюк FireFox


3-1158737435
svt
2006-09-20 11:30
2006.11.26
Люди, помогите, где можно найти информацию


15-1162621229
ifbegin
2006-11-04 09:20
2006.11.26
Delphi 5. Руководство разработчка


4-1152692653
17Landgraf
2006-07-12 12:24
2006.11.26
Как поставить курсор в конец файла?


2-1163097500
Mr tray
2006-11-09 21:38
2006.11.26
Как избежать мигания при прорисовке?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский