Solved

I want to replace multiple matching patterns with multiple specified replacement strings

Posted on 2006-07-15
5
13,133 Views
Last Modified: 2007-12-19
Oracle 10g R1

We have varchar2(250) columns that have various text data we want to replace with other specific text.

We have record as string like:

123abc...""

and we want to replace each     &    and each     quot;

with 99 and 88 respectively.

I have tried REPLACE and REPLACE with CASE statements and we've tried REGEXP_REPLACE.
The problem seems that Oracle SQL will only replace the first one listed and ignores
any other 'find this and replace with this' after in the string.  

Here is an example of the SQL:

select
case
when "big_text_column" like '%&%' then replace("big_text_column",  '&'   ,    '99')
when "big_text_column" like '%quot;%'   then replace("big_text_column",  'quot;'     ,     '88')
   else "big_text_column"
   end as "big_text_column"
from table_with_big_text_column;

The result set 'fixes' the & ones but does nada for the quot; replacement;  
   123abc...99quot;99quot;

I would like it to return:
     123abc...99889988

How can I get it to change both (or more if needed) to their respective 99 and 88 ? We are not familiar with PL/SQL.
0
Comment
Question by:egarrison
  • 3
  • 2
5 Comments
 
LVL 14

Expert Comment

by:sathyagiri
ID: 17115138
Try this
select replace(replace(big_text_column,'&amp','99'),'quot',88) from table_with_big_text_column;
0
 
LVL 14

Accepted Solution

by:
sathyagiri earned 500 total points
ID: 17115157
Her's an example

SQL> set define off
SQL> select replace(replace('123abc...&ampquot;&ampquot','&amp','99'),'quot','88') from dual;

REPLACE(REPLACE('1
------------------
123abc...9988;9988
0
 
LVL 3

Author Comment

by:egarrison
ID: 17115344
Thank you, thank you. I didn't expect and answer so soon. Works great.

A side note suppose I wanted to subsitute '&amp' with  a single quote?
Instead of 99
    select replace(replace('123abc...&ampquot;&ampquot','&amp','99'),'quot','88') from dual;

It returns '
    select replace(replace('123abc...&ampquot;&ampquot','&amp',' ' '),'quot','88') from dual;
 
 But the SQL errors at the 3 ' i row and the ESCAPE clause did not work I guess it is only
for wildcard characters and not reserved characters like single quote?
0
 
LVL 14

Expert Comment

by:sathyagiri
ID: 17115433
Try this
select replace(replace('123abc...&ampquot;&ampquot','&amp',''''),'quot','88') from dual
0
 
LVL 3

Author Comment

by:egarrison
ID: 17115476
Thank you, yep right on again...I guess I've been staring at this too long
as I had too many single quotes in my replacement sting for occurs of  '&amp'.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Bulk insert into global temporary table 2 62
Export BLOB data from Oracle 10g 4 35
Oracle TEXT search question 9 48
Shredding xml into an oracle 11g Database 2 27
Have you ever had to make fundamental changes to a table in Oracle, but haven't been able to get any downtime?  I'm talking things like: * Dropping columns * Shrinking allocated space * Removing chained blocks and restoring the PCTFREE * Re-or…
I remember the day when someone asked me to create a user for an application developement. The user should be able to create views and materialized views and, so, I used the following syntax: (CODE) This way, I guessed, I would ensure that use…
This video shows syntax for various backup options while discussing how the different basic backup types work.  It explains how to take full backups, incremental level 0 backups, incremental level 1 backups in both differential and cumulative mode a…
This video explains what a user managed backup is and shows how to take one, providing a couple of simple example scripts.

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now