Losowanie liczby dla spełnionego i niespełnionego warunku w FireBird

0

sql/firebird 2.5

Witam,
moj problem polega na tym ze, chce zrobic losowanie liczby gdy warunek(imie konczy sie literą "a") jest spełniony (losowanie liczby parzystej) i gdy nie jest spełniony (losowanie liczby nieparzystej)

wewnatrz procedury mam cos takiego:

update tabela1
set
pole= iif(   right(imie,1)='a',
              (rand()*4)*2,
              (((rand()*4)*2)+1)
          );

i wyrzuca błąd:
"Arithmetic overflow or division by zero has occurred.
arithmetic exception, numeric overflow, or string truncation."

probowalem robic to na case-ie:

case when imie like '%a' then round((rand()*4),0)*2 else  ((round((rand()*4),0)*2)+1) end

ale również wyrzuca ten sam bład:/

Gdy zamienie losowania na jakies sztywne wartości np.: 0 ,1 to działa

prosze o pomoc

0

select first 10 iif( RIGHT(imie,1)="a",
(round(rand(),2)*4)*200,
(round(rand(),2)*4)*200+1
)

Najpierw round randoma a potem iloczyn

1 użytkowników online, w tym zalogowanych: 0, gości: 1