Обсуждение: Replacing characters in a string
Hello everyone,
I need to replace all occurrences of a certain character in a string.
For that I'm using regexp_replace, but so far I only managed to
replace the first character, here's an example:
> SELECT regexp_replace('xaxx', 'x', 'e');
regexp_replace
----------------
eaxx
(1 row)
But the result I'd need is 'eaee'. How can I do it?
Thanks,
Luís
2010/9/14 Luís de Sousa <luis.a.de.sousa@gmail.com>:
> Hello everyone,
>
> I need to replace all occurrences of a certain character in a string.
> For that I'm using regexp_replace, but so far I only managed to
> replace the first character, here's an example:
>
>> SELECT regexp_replace('xaxx', 'x', 'e');
> regexp_replace
> ----------------
> eaxx
> (1 row)
>
> But the result I'd need is 'eaee'. How can I do it?
Just remove the "regexp" bit:
SELECT replace('xaxx', 'x', 'e');
--
Thom Brown
Twitter: @darkixion
IRC (freenode): dark_ixion
Registered Linux user: #516935
2010/9/14 Luís de Sousa <luis.a.de.sousa@gmail.com>
Hello everyone,
I need to replace all occurrences of a certain character in a string.
For that I'm using regexp_replace, but so far I only managed to
replace the first character, here's an example:
> SELECT regexp_replace('xaxx', 'x', 'e');
regexp_replace
----------------
eaxx
(1 row)
But the result I'd need is 'eaee'. How can I do it?
Hi,
try this one:
SELECT regexp_replace('xaxx', 'x', 'e', 'g');
regards
Szymon Guz
Hello
2010/9/14 Luís de Sousa <luis.a.de.sousa@gmail.com>:
> Hello everyone,
>
> I need to replace all occurrences of a certain character in a string.
> For that I'm using regexp_replace, but so far I only managed to
> replace the first character, here's an example:
>
>> SELECT regexp_replace('xaxx', 'x', 'e');
> regexp_replace
> ----------------
> eaxx
> (1 row)
>
> But the result I'd need is 'eaee'. How can I do it?
postgres=# select replace('abcdeabcde','a','x');
replace
────────────
xbcdexbcde
(1 row)
or
postgres=# SELECT regexp_replace('xaxx', 'x', 'e','g'); -- use a flag Global
regexp_replace
────────────────
eaee
(1 row)
Regards
Pavel Stehule
>
> Thanks,
>
> Luís
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>
2010/9/14 Luís de Sousa <luis.a.de.sousa@gmail.com>:
>> SELECT regexp_replace('xaxx', 'x', 'e');
> regexp_replace
> ----------------
> eaxx
> (1 row)
>
> But the result I'd need is 'eaee'. How can I do it?
Just specify 'g' as the flags parameter (the 4th one). It means 'globally'.
SELECT regexp_replace('xaxx', 'x', 'e', 'g');
There are more of this flags described here:
http://www.postgresql.org/docs/8.4/interactive/functions-matching.html#POSIX-EMBEDDED-OPTIONS-TABLE
p.s. The question is for hackers - BTW I did not find 'g' in this
table, is it a docs bug?
>
> Thanks,
>
> Luís
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>
--
Sergey Konoplev
Blog: http://gray-hemp.blogspot.com /
Linkedin: http://ru.linkedin.com/in/grayhemp /
JID/GTalk: gray.ru@gmail.com / Skype: gray-hemp / ICQ: 29353802
Luís de Sousa ha scritto:
> Hello everyone,
>
> I need to replace all occurrences of a certain character in a string.
> For that I'm using regexp_replace, but so far I only managed to
> replace the first character, here's an example:
>
>> SELECT regexp_replace('xaxx', 'x', 'e');
> regexp_replace
> ----------------
> eaxx
> (1 row)
>
> But the result I'd need is 'eaee'. How can I do it?
>
Using the right function? :)
test=# SELECT replace('xaxx', 'x', 'e');
replace
---------
eaee
(1 row)
Your usage involving regexp!
P.s. google for "replace string postgresql" and I'm feeling lucky
> Thanks,
>
> Luís
>
Michele
Thank you for all the answers, several ways this can be made. Luís
Sergey Konoplev <gray.ru@gmail.com> writes:
> Just specify 'g' as the flags parameter (the 4th one). It means 'globally'.
> SELECT regexp_replace('xaxx', 'x', 'e', 'g');
> There are more of this flags described here:
> http://www.postgresql.org/docs/8.4/interactive/functions-matching.html#POSIX-EMBEDDED-OPTIONS-TABLE
> p.s. The question is for hackers - BTW I did not find 'g' in this
> table, is it a docs bug?
No. That table is referenced for numerous cases where 'g' is not an
allowed flag. Instead, 'g' is documented in-line in the description
of regexp_replace.
regards, tom lane