I think you could use a function like the one below and use the following
select:
select id, name1, name2, prefname(foo) as pref from foo;
create function prefname(foo)
returns text as'
declare
foo alias for $1;
begin
if foo.name2 is null
then
return foo.name1;
else
return foo.name2;
end if;
end;'
language 'plpgsql';
--
Jesus Aneiros Sosa
mailto:[EMAIL PROTECTED]
http://jagua.cfg.sld.cu/~aneiros
On Tue, 15 Aug 2000, Thomas Swan wrote:
>
> Is there anyway way to get the following to work?
>
> table foo
> id | name1 | name2
> ---+---------+------
> 0 | Abe | NULL
> 1 | William | Bill
>
>
> create function prefname(text, text)
> returns text as'
> declare
> name1 alias for $1;
> name2 alias for $2;
> begin
> if name2 isnull
> then
> return name1;
> else
> return name2;
> end if;
> end;'
> language 'plpgsql';
>
> if I do
>
> I wind up with
>
> id | name1 | name2 | prefname
> ---+---------+-------+-----------
> 0 | Abe | NULL | NULL
> 1 | William | Bill | Bill
>
> instead of
>
> id | name1 | name2 | prefname
> ---+---------+-------+-----------
> 0 | Abe | NULL | Abe
> 1 | William | Bill | Bill
>
> I assume this has to do with Postgres not executing the function is one of
> the arguments is missing...
>
>
> -
> - Thomas Swan
> - Graduate Student - Computer Science
> - The University of Mississippi
> -
> - "People can be categorized into two fundamental
> - groups, those that divide people into two groups
> - and those that don't."