Thread: find and replace the string within a column
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 />
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."
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/
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