Function and Cast
create function expcast_int_to_bool(i integer) returning boolean;
if (i is null) then return null;
elif (i != 0) then return 't';
else return 'f';
end if;
end function;
create explicit cast (integer as boolean with expcast_int_to_bool);
Демонстрация
create table mytable
(
id integer not null,
isavailable boolean not null
);
insert into mytable values(1, 't');
insert into mytable values(2, 'f');
select id from mytable where isavailable = cast(0 as boolean);
select id from mytable where isavailable = cast(1 as boolean);
select id from mytable where isavailable = cast(-1 as boolean);
select id from mytable where isavailable = cast('t' as boolean);
select id from mytable where isavailable = cast('f' as boolean);
Эта демонстрация может быть запущена через DB-Access - и она правильно возвращает идентификатор 2 для первого и последнего оператора SELECT и идентификатор1 для остальных трех.Я официально не продемонстрировал, что он все еще работает, когда целочисленные или логические литералы заменяются на «?».Хотя есть хотя бы умеренный шанс, что это сработает.