Обсуждение: find and replace the string within a column

Поиск
Список
Период
Сортировка

find and replace the string within a column

От
Nicholas I
Дата:
Hi, <br /><br />the data in my table, have a substring enclosed in parenthesis, <br /><br />1. i want to replace the
stringwith the brackets to null or any other value.<br />2. remove the contents within brackets.<br /><br />Example:
<br/> table name person:<br /><br />name<br />------------------------------------<br />Samuel (S/o Sebastin )<br
/>-------------------------------------<br/><br />remove the word within the brackets.<br />the output should be ,
Samuel.<br/><br /> the below one help's me to find the data within the two brackets.<br /><br />SELECT
name,(REGEXP_MATCHES(name,E'\\(.+?\\)'))[1] from person;<br />regexp_matches<br />
------------------------------------<br/> (S/o Sebastin )<br /> -------------------------------------<br /><br
/>-NicholasI<br /><br /><br /> 

Re: find and replace the string within a column

От
Jayadevan M
Дата:
Hello,
> the below one help's me to find the data within the two brackets.
> 
> SELECT name,(REGEXP_MATCHES(name, E'\\(.+?\\)'))[1] from person;
> regexp_matches
> ------------------------------------
> (S/o Sebastin )
> -------------------------------------
> 
Trying to work with your code - 
update table set name = 
substr( name,1,strpos(name, (REGEXP_MATCHES(name, E'\\(.+?\\)')) )-1 ) ||
substr( name,strpos(name, (REGEXP_MATCHES(name, E'\\(.+?\\)')) ) + 1 
,char_length(name))

I am trying to find what is there before the pattern and after the pattern 
and concatenating them . Please see documentation for proper use of 
substr,strpos,cahr_length etc. 

Regards,
Jayadevan





DISCLAIMER: 

"The information in this e-mail and any attachment is intended only for 
the person to whom it is addressed and may contain confidential and/or 
privileged material. If you have received this e-mail in error, kindly 
contact the sender and destroy all copies of the original communication. 
IBS makes no warranty, express or implied, nor guarantees the accuracy, 
adequacy or completeness of the information contained in this email or any 
attachment and is not liable for any errors, defects, omissions, viruses 
or for resultant loss or damage, if any, direct or indirect."







Re: find and replace the string within a column

От
Craig Ringer
Дата:
On 24/09/2010 5:15 PM, Nicholas I wrote:

> Example:
> table name person:
>
> name
> ------------------------------------
> Samuel (S/o Sebastin )
> -------------------------------------
>
> remove the word within the brackets.
> the output should be , Samuel.

Can't you just regexp_replace, matching \([^)]+\) (in other words "an 
open parenthisis, then a sequence of one or more of any character other 
than a close parenthesis, followed by a close parentheis) and replacing 
with an empty string ?

-- 
Craig Ringer

Tech-related writing at http://soapyfrogs.blogspot.com/


Re: find and replace the string within a column

От
Leif Biberg Kristensen
Дата:
On Friday 24. September 2010 13.34.12 Craig Ringer wrote:
> On 24/09/2010 5:15 PM, Nicholas I wrote:
> 
> > Example:
> > table name person:
> >
> > name
> > ------------------------------------
> > Samuel (S/o Sebastin )
> > -------------------------------------
> >
> > remove the word within the brackets.
> > the output should be , Samuel.
> 
> Can't you just regexp_replace, matching \([^)]+\) (in other words "an 
> open parenthisis, then a sequence of one or more of any character other 
> than a close parenthesis, followed by a close parentheis) and replacing 
> with an empty string ?

I'm doing a similar task, removing comments "hidden" within curly braces like 
this:
       str := REGEXP_REPLACE(str, '{.*?}', '', 'g');

No escaping needed at all.

regards,
Leif Biberg Kristensen