Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.misc -> Re: Search Replace String function
Anil G wrote:
> Does oracle provides search replace string functionality?
>
> e.g. lets say i have data into column as '(A + B + C) - (D + E)'
> I would like to have following : (
> NVL(SUM(DECODE(b.lookup_code,'A',a.q_qty,0)),0) +
> NVL(SUM(DECODE(b.lookup_code,'B',a.q_qty,0)),0) +
> NVL(SUM(DECODE(b.lookup_code,'C',a.q_qty,0)),0)
> ) -
> (
> NVL(SUM(DECODE(b.lookup_code,'D',a.q_qty,0)),0) +
> NVL(SUM(DECODE(b.lookup_code,'E',a.q_qty,0)),0)
> )
>
> In this case only thing needs to be done is search replace all values
> with
> NVL(SUM(DECODE(b.lookup_code,??,a.q_qty,0)),0)
If you're on 10g, then consider this:
select regexp_replace(
'(A+B+C)-(D+E)' ,'([A-Z]{1})' ,'NVL(SUM(DECODE(b.lookup_code,''\1'',a.q_qty,0)),0)' )
Of course, the regexp wouldn't be that simple if instead of single uppercase letter your codes are various strings, but still doable. For example, if your variable placeholders are prefixed with some special character, like '#', then the regexp isn't a lot more complex: '#([[:alpha:]]+)'.
Hth,
Vladimir M. Zakharychev
N-Networks, makers of Dynamic PSP(tm)
http://www.dynamicpsp.com
Received on Wed Aug 09 2006 - 14:16:07 CDT
![]() |
![]() |