在Informix中将整数转换为布尔值

时间:2010-09-16 17:00:13

标签: sql casting informix

我需要在Informix中设计我的架构,以便查询BOOLEAN类型的INTEGER。例如如果我提供布尔SELECT id FROM mytable WHERE isavailable = ?或整数False,则0有效。我知道我需要使用某种演员来设置架构,但我不确定如何。这样做的原因是我正在使用的软件的另一部分中的一个错误,这不是我要解决的问题: - (

1 个答案:

答案 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。我还没有正式证明当整数或布尔文字被'?'取代时它仍然有用。但是,它至少有可能发挥作用。