Re: Default value if query returns 0 rows?

From: Bruno Wolff III <bruno(at)wolff(dot)to>
To: Lars Kellogg-Stedman <lars(at)oddbit(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Default value if query returns 0 rows?
Date: 2004-09-17 15:31:51
Message-ID: 20040917153151.GA31839@wolff.to
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Fri, Sep 17, 2004 at 11:03:48 -0400,
Lars Kellogg-Stedman <lars(at)oddbit(dot)com> wrote:
> Hello,
>
> I have a simple two-column table mapping names to ids. I'd like to write a
> select statement that will return a default value if a given name isn't
> found in the table. That is, I want something equivalent to the following
> pseudocode:
>
> if exists (select 1 from map where name = 'foo') then
> select id from map where name = 'foo'
> else
> select -1
> end if
>
> I think I can see how to do this by writing a pl/pgsql function, but I'm
> curious if it's possible to do this completely as part of a select
> statement. I've toyed with CASE expressions, but the fact that a missing
> value returns 0 rows continues to foil me.

If there can be at most one match you can use a subselect and coalesce.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Gary Doades 2004-09-17 15:43:18 Re: Default value if query returns 0 rows?
Previous Message Lars Kellogg-Stedman 2004-09-17 15:03:48 Default value if query returns 0 rows?