J'ai des valeurs dans le tableau comme Supposons que je souhaite supprimer (a, b, c, d, e) code> et je veux supprimer toute valeur telle que mentionnée ci-dessous. p>
B code> puis virgner (
, code>) doit déplacer i.e
(a, c, d, e) code>. S'il vous plaît aider. P>
3 Réponses :
Vous pouvez utiliser soit remplacer ou regex_replace pour réaliser ce que vous attendez dans PLSQL.
Select replace(MyTable.MyColumn, 'from value', 'to value') as NewValue from MyTable
Comment cela répond-il à la question? L'OP ne veut pas seulement remplacer une lettre, mais également les virgules associées. Je ne suis pas sûr de savoir pourquoi quelqu'un pourrait être upvote.
En supposant que toutes vos lettres soient séparées par une seule virgule, vous pouvez utiliser une combinaison de remplacer code> et
trim code> fonctions.
--Test data
with t(s,r) AS
(
select 'a,b,c,d,e', 'b' from dual union all
select 'a,b,c,d,e', 'e' from dual union all
select 'a,b,c,d,e', 'a' from dual union all
select 'a,b,c,d,e', 'c' from dual union all
select 'a,b,c,d,e', 'd' from dual union all
select 'a,bc,c,d,e', 'bc' from dual union all
select 'ad,bc,c,d,ef','ef' from dual union all
select 'ad,bc,c,d,ef','ad' from dual
)
select s, r as to_remove,
trim ( both ',' from replace(','||s||',', ','||r||',' ,',') ) removed
from t;
S TO_REMOVE REMOVED
a,b,c,d,e b a,c,d,e
a,b,c,d,e e a,b,c,d
a,b,c,d,e a b,c,d,e
a,b,c,d,e c a,b,d,e
a,b,c,d,e d a,b,c,e
a,bc,c,d,e bc a,c,d,e
ad,bc,c,d,ef ef ad,bc,c,d
ad,bc,c,d,ef ad bc,c,d,ef
J'ai emprunté du code de Kaushik Nayak et a ajouté la Regexp_replace mentionnée par khatibzadeh.
Si vous avez trouvé la réponse utile, considérez accepter , afin qu'il puisse Aidez également les autres.Aso lire Ceci