Come posso accedere agli oggetti corrispondenti per la sostituzione quando uso la modalità di espressione regolare in Developer PL / SQL Trova & amp; Sostituire?

StackOverflow https://stackoverflow.com/questions/1614478

  •  06-07-2019
  •  | 
  •  

Domanda

Ho una query in cui desidero sostituire

avg(j2)

con

avg(case when j2 <> 0 then j2 else 0 end)

Quanto sopra è un esempio specifico ma il modello è lo stesso con tutte le sostituzioni. È sempre una parola seguita da un numero che deve essere sostituito con l'istruzione case che controlla se il numero non è 0.

Ho provato quanto segue per trovare:

avg(\(\w\d\))

e la ricerca funziona. Ora, voglio fare un rimpiazzo, quindi provo:

avg(case when \1 <> 0 then \1 else 0 end)

ma mette letteralmente \ 1 e non il testo catturato dalla corrispondenza. Ho provato \\ 1 & amp; $ 1 e li prende letteralmente tutti. Qualcuno può dirmi qual è la sintassi giusta per utilizzare il testo acquisito per la sostituzione? È supportato?

Grazie,

Ashish

È stato utile?

Soluzione

Non sono sicuro che l'IDE sviluppatore PL / SQL supporti l'acquisizione di gruppo. Tuttavia, le versioni recenti sembrano supportare la ricerca e la sostituzione basate su regex. Impossibile trovare una fonte per confermare se l'acquisizione di gruppo funziona. Perché non provi a incollare il codice in qualcosa come Notepad ++ e prova lo stesso regex. Dovrebbe funzionare. Potresti incollare il risultato sul tuo IDE e continuare da lì ...

Altri suggerimenti

Puoi sostituirlo usando $ e numeri come, $ 0 o $ 1 ecc. vedi un esempio di seguito

find: TABLE (.*\..*) IS
replace: COLUMN $1 IS

http://regexr.com/3gm6c

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top