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.
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? |