Come posso accedere agli oggetti corrispondenti per la sostituzione quando uso la modalità di espressione regolare in Developer PL / SQL Trova & amp; Sostituire?
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
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