RE: search/replace in update

From: Jeff Eckermann <jeckermann(at)verio(dot)net>
To: "'Josh Berkus'" <josh(at)agliodbs(dot)com>, Gary Stainburn <gary(dot)stainburn(at)ringways(dot)co(dot)uk>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: RE: search/replace in update
Date: 2001-06-14 15:42:23
Message-ID: 08CD1781F85AD4118E0800A0C9B8580B094AD7@NEZU
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

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

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 2001-06-14 15:51:35 Re: performance issues
Previous Message Alex Pilosov 2001-06-14 15:30:54 Re: Re: Timestamp without time zone