Re: default value for select?

From: Philip Hallstrom <postgresql(at)philip(dot)pjkh(dot)com>
To: Mark Fenbers <Mark(dot)Fenbers(at)noaa(dot)gov>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: default value for select?
Date: 2005-05-09 17:18:04
Message-ID: 20050509101745.F26087@wolf.pjkh.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

> I want to update a column in myTable. The value this column is set to depends on a
> nested select statement which sometimes returns 0 rows instead of 1. This is a
> problem since the column I'm trying to update is set to refuse nulls. Here's a
> sample:
>
> update myTable set myColumn = (Select altColumn from altTable where altColumn !=
> 'XXX' limit 1) where myColumn = 'XXX';
>
> MyColumn cannot accept nulls, but sometimes "Select altColumn ..." returns 0 rows,
> and thus, the query fails.
>
> Is there a way to set a default value to be inserted into myColumn if and when
> "select altColumn ..." returns zero rows?

COALESCE(value [, ...])

The COALESCE function returns the first of its arguments that is not null.
Null is returned only if all arguments are null. This is often useful to
substitute a default value for null values when data is retrieved for
display, for example:

SELECT COALESCE(description, short_description, '(none)') ...

Like a CASE expression, COALESCE will not evaluate arguments that are not
needed to determine the result; that is, arguments to the right of the
first non-null argument are not evaluated.

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Keith Worthington 2005-05-09 17:26:55 Re: default value for select?
Previous Message Mark Fenbers 2005-05-09 16:57:41 default value for select?