Thread: syntax prob

syntax prob

From
"postgresql"
Date:
I am away from my server for the weekend and I need a little help.

when doing  updates of multiple fields there commas between 
the  elements?
I mean

update table set cname = 'Bill', caddress = '2nd floor' where acode = 
'AVAN';

I refer to the space between 'Bill' and caddress. 

if I could get to the server I would just try it. what happens if you have 
only 1 field to update and you add a comma, like this

update table set cname = 'Bill',  where acode = 'AVAN';

I am trying to concatenate an update string and I would love to not 
have to worry about the comma. I guess I could figure out how many 
things have changed then add commas... but I could also  wish for it 
to be easier.

Ted




Re: syntax prob

From
Tod McQuillin
Date:
On Fri, 23 Feb 2001, postgresql wrote:

> when doing  updates of multiple fields there commas between
> the  elements?

Yes.  update t set a=b, c=d where ...

> if I could get to the server I would just try it. what happens if you have
> only 1 field to update and you add a comma, like this
>
> update table set cname = 'Bill',  where acode = 'AVAN';

You get: ERROR:  parser: parse error at or near "where"

> I am trying to concatenate an update string and I would love to not
> have to worry about the comma.

Here's what I do.  I keep a list of the things I am updating, like this,
in perl:

push(@updates, "set a=b");
push(@updates, "set c=d");
$sql = "update t " . join(", ", @updates) . " where ...";

or like this in php:

$updates[] = "set a=b";
$updates[] = "set c=d";
$sql = "update t " . implode(", ", $updates) . " where ...";

The join() and implode() functions make sure no comma is used if the
updates array has fewer than two elements.  Otherwise they stick commas
between each one, just like sql wants.
-- 
Tod McQuillin