Re: [SQL] Why wont this update work?

From: José Soares <jose(at)sferacarta(dot)com>
To: Robert Chalmers <robert(at)chalmers(dot)com(dot)au>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: [SQL] Why wont this update work?
Date: 1999-05-19 14:19:13
Message-ID: 3742C861.4673521A@sferacarta.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Robert Chalmers ha scritto:

> Hi,
> trying to get this to work with pgsql, but it refuses to do anything...
>
> the table is called catalog. The field is called language and is a
> varchar(3) field.
> 81 of the records have the letter 'E' in the language field. i want to
> put 'NoD' in the rest.
>
> UPDATE catalog
> SET language = 'NoD'
> WHERE NOT language = 'E';
>

I think you have a NULL problem:

This query doesn't work probably because the language column is always 'E' or
NULL and NULL is an unknown value,
therefore if you compare a NULL value with 'E' it is always FALSE.

>
> nor does
>
> UPDATE catalog
> SET language = 'NoD'
> WHERE language = 'NULL'; ........ or NULL and so on.
>
> I can change the 81 letter 'E's to anything I like, but can not UPDATE the
> blank fields..
>
> can anyone tell me what I am missing here please?
>

This should work:

UPDATE catalog SET language = 'NoD'
WHERE language IS NULL --this for every NULL value
OR language <> 'E'; --and this one to everey value different from
NULL

Example:

create table catalog(id int, language varchar(3));
CREATE
insert into catalog values(1,'E');
INSERT 150666 1
insert into catalog values(2,'E');
INSERT 150667 1
insert into catalog values(3,'z');
INSERT 150668 1
insert into catalog values(4);
INSERT 150669 1
insert into catalog values(5);
INSERT 150670 1
insert into catalog values(6);
INSERT 150671 1
select * from catalog;
id|language
--+--------
1|E
2|E
3|z
4|
5|
6|
(6 rows)

select * from catalog where language = 'E';
id|language
--+--------
1|E
2|E
(2 rows)

select * from catalog where language <> 'E';
id|language
--+--------
3|z
(1 row)

select * from catalog where language <> 'E' or language is null;
id|language
--+--------
3|z
4|
5|
6|
(4 rows)

>
> --- http://4qir.quantum-radio.net.au - Where Only The Dedicated Survive!
> 4QIR Quantum Radio. Bringing you the original sounds of AFVN, with some of
> the
> original DJ's - back on air - and supporting not only the original Vets, in
> comprehensive AFVN Archives, but putting together segments for the fighting
> men and
> women of todays services all around the world. World Music, for people of
> the world.

______________________________________________________________
PostgreSQL 6.5.0 on i586-pc-linux-gnu, compiled by gcc 2.7.2.3
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
José

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message José Soares 1999-05-19 14:38:09 Re: [SQL] Oddities with NULL and GROUP BY
Previous Message Tom Lane 1999-05-19 13:53:20 Re: [SQL] Why wont this update work?