From: | Gary Stainburn <gary(dot)stainburn(at)ringways(dot)co(dot)uk> |
---|---|
To: | Jeff Eckermann <jeckermann(at)verio(dot)net>, "'Josh Berkus'" <josh(at)agliodbs(dot)com> |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: search/replace in update |
Date: | 2001-06-15 11:30:39 |
Message-ID: | 01061512303902.01056@gary.ringways.co.uk |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Hi Jeff,
Thanks for the response. Although I've never used functions before, I kinda
follow what you're doing. Presumably the parameters are field, old string,
new string.
However, I have two problems.
1) I don't know how I would call that function
2) when I tried to create the function it failed saying unrecognised
landuage. The message I got was:
ERROR: Unrecognized language specified in a CREATE FUNCTION: 'plperl'.
Recognized languages are sql, C, internal and the created procedural
languages.
I'm running postgresql 7.0.2-2 installed from rpms onto RH6.1.
Gary
On Thursday 14 June 2001 4:42 pm, Jeff Eckermann wrote:
> Which function would you be suggesting? I hope not "translate". That
> works on characters, not strings. Easy to confuse if you don't read
> closely enough, as I found to my cost.
> Easiest way using these functions would be:
> UPDATE table
> SET mobile_number = '07889' || substr (mobile_number, 5)
> WHERE mobile_number LIKE '0589%';
> Alternatively, you could define a generic search/replace function like:
> CREATE FUNCTION search_replace (text, text, text)
> RETURNS text AS '
> RETURN @_[0] =~ s/@_[1]/@_[2]/
> ' LANGUAGE 'plperl';
> Which would be available anytime for similar purposes (credit to Tom Lane
> for the idea).
>
> > -----Original Message-----
> > From: Josh Berkus [SMTP:josh(at)agliodbs(dot)com]
> > Sent: Thursday, June 14, 2001 9:52 AM
> > To: Gary Stainburn
> > Cc: pgsql-sql(at)postgresql(dot)org
> > Subject: Re: search/replace in update
> >
> > Gary,
> >
> > > This means that e.g. all mobile numbers that used to start 0589 now
> > > start 07889.
> > >
> > > Is there a way in SQL to update the phone number in-place?
> >
> > Postgresql has a nifty string substitution function. For this and other
> > character manipulation functions, see:
> >
> > http://www.postgresql.org/idocs/index.php?functions-string.html
> >
> > You should be able to fairly easily swap out "07889" and replace it with
> > "0589".
> >
> > -Josh
> >
> >
> >
> > ______AGLIO DATABASE SOLUTIONS___________________________
> > Josh Berkus
> > Complete information technology josh(at)agliodbs(dot)com
> > and data management solutions (415) 565-7293
> > for law firms, small businesses fax 621-2533
> > and non-profit organizations. San Francisco
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 4: Don't 'kill -9' the postmaster
From | Date | Subject | |
---|---|---|---|
Next Message | Jeff Eckermann | 2001-06-15 14:25:48 | RE: search/replace in update |
Previous Message | Alessandro Rossi | 2001-06-15 07:59:46 | set datestyle to European PROBLEM |