Re: Replace NULL values - Mailing list pgsql-general

From Stefan Schwarzer
Subject Re: Replace NULL values
Date
Msg-id 59995785-D72F-4CBE-9403-9D980FDDDE0B@grid.unep.ch
Whole thread Raw
In response to Re: Replace NULL values  (Sim Zacks <sim@compulab.co.il>)
Responses Re: Replace NULL values  (Martijn van Oosterhout <kleptog@svana.org>)
Re: Replace NULL values  (Sim Zacks <sim@compulab.co.il>)
List pgsql-general
I have an internet map server connected to my database. Until now,
"no data" fields within the table were filled with a "-9999", i.e.
"-9999" equalled "no data available".

Now, for displaying a map with different classes (red for values from
0-100, green for values from 100-200....) I need to build as well a
class for "no data" (which is displayed in grey). Until now that
worked perfectly well with the "-9999" values. But since I inserted a
couple of new countries (which do not find any corresponding values
in the tables, as they don't yet exist), I receive the usual "-9999"
plus "NULL" values. Both should be considered as "no data" and thus
displayed in grey.

Unfortunately the mapserver can't deal with NULL values. So, I can't
build a class saying
    if values = NULL do something
but instead it only works with "fake" NULL values as -9999
    if values = -9999 do something

Stef

> Aside from your database structure being problematic, what are you
> trying to accomplish?
> In other words, what do you want to replace the nulls with and in
> what circumstance?
> I imagine your table looks like this
> ID,country,1950,1951,1952,1953,....
> 1   usa    50   null  70   10
> 2  canada  10   45   null   4
>
> Please mention what you would like to do with this?
>
>
> Stefan Schwarzer wrote:
>>> On Thu, Sep 07, 2006 at 07:45:19AM +0200, Stefan Schwarzer wrote:
>>>> Hi there,
>>>>
>>>> is there a simple way to replace NULL values in multiple columns
>>>> within the SQL statement? I changed the underlaying country
>>>> template
>>>> of your database; so now there are a couple of NULL values when I
>>>> join the stats-table with the country table. Unfortunately, my
>>>> queries have always multiple (year) columns, so I can't do a
>>>> kind of
>>>> manual replace.
>>>>
>>>> I found that the COALESCE command does something like this, but I
>>>> couldn't figure out how this works.
>>>
>>> Yes, COALESCE replaces NULLs, however your examples have neither
>>> NULLs
>>> nor use COALESCE, so I don't understand what your question is.
>>>
>>> Please repost with an actual example of your problem.
>> As I said, I couldn't figure out how COALESCE would work on
>> multiple columns (without naming them explicitly).
>> So, say I have a table with columns for each year between 1970 and
>> 2005. For specific countries the values might be NULL, depending
>> if the statistical table has been updated recently (then they will
>> have a value), or not (then they will be NULL). A sample query
>> would thus be something like:
>>     SELECT * FROM pop_density
>>  ---------------------------(end of
>> broadcast)---------------------------
>> TIP 9: In versions below 8.0, the planner will ignore your desire to
>>       choose an index scan if your joining column's datatypes do not
>>       match
>
> ---------------------------(end of
> broadcast)---------------------------
> TIP 4: Have you searched our list archives?
>
>               http://archives.postgresql.org


pgsql-general by date:

Previous
From: Sim Zacks
Date:
Subject: Re: Asynchronous trigger
Next
From: Martijn van Oosterhout
Date:
Subject: Re: Replace NULL values