我需要在Informix中设计我的架构,以便查询BOOLEAN
类型的INTEGER
。例如如果我提供布尔SELECT id FROM mytable WHERE isavailable = ?
或整数False
,则0
有效。我知道我需要使用某种演员来设置架构,但我不确定如何。这样做的原因是我正在使用的软件的另一部分中的一个错误,这不是我要解决的问题: - (
答案 0 :(得分:1)
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运行 - 它正确返回第一个和最后一个SELECT语句的ID 2和其他三个ID 1的ID 1。我还没有正式证明当整数或布尔文字被'?'取代时它仍然有用。但是,它至少有可能发挥作用。