Comment puis-je accéder aux objets correspondants pour les remplacer lorsque j'utilise le mode d'expression régulière dans PL / SQL Developer? Find & amp; Remplacer?

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

  •  06-07-2019
  •  | 
  •  

Question

J'ai une requête pour laquelle je souhaite remplacer

avg(j2)

avec

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

Ce qui précède est un exemple spécifique, mais le modèle est le même pour tous les remplacements. C'est toujours un mot suivi d'un nombre qui doit être remplacé par l'instruction case qui vérifie si le nombre n'est pas 0.

J'ai essayé ce qui suit pour trouver:

avg(\(\w\d\))

et la recherche fonctionne. Maintenant, je veux faire un remplacement alors j'essaie:

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

mais cela met le littéral \ 1 et pas le texte capturé de la correspondance. J'ai essayé \\ 1 & amp; $ 1 également et cela les prend tous à la lettre. Quelqu'un peut-il me dire quelle est la bonne syntaxe pour utiliser le texte capturé à des fins de remplacement? Est-ce pris en charge?

Merci,

Ashish

Était-ce utile?

La solution

Je ne sais pas si l'EDI de développeur PL / SQL prend en charge la capture de groupe. Les versions récentes semblent prendre en charge la recherche et le remplacement basés sur regex. Impossible de trouver une source pour confirmer si la capture de groupe fonctionne. Pourquoi n'essayez-vous pas de coller le code dans quelque chose comme Notepad ++ et essayez la même regex. Ça devrait marcher. Vous pouvez coller le résultat dans votre IDE et continuer à partir de là ...

Autres conseils

Vous pouvez le remplacer par $ et un nombre comme, $ 0 ou $ 1 , etc., voir un exemple ci-dessous

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

http://regexr.com/3gm6c

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top