0
votes

Supprimer le mot de la chaîne dans la requête Oracle

J'ai des valeurs dans le tableau comme (a, b, c, d, e) et je veux supprimer toute valeur telle que mentionnée ci-dessous.

Supposons que je souhaite supprimer B puis virgner (, ) doit déplacer i.e (a, c, d, e) . S'il vous plaît aider.


1 commentaires

Si vous avez trouvé la réponse utile, considérez accepter , afin qu'il puisse Aidez également les autres.Aso lire Ceci


3 Réponses :


1
votes

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


1 commentaires

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.



2
votes

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    


0 commentaires

0
votes

J'ai emprunté du code de Kaushik Nayak et a ajouté la Regexp_replace mentionnée par khatibzadeh. XXX


0 commentaires