Удалить слово из строки в запросе оракула - PullRequest
0 голосов
/ 19 апреля 2019

У меня есть значения в таблице, такие как (a,b,c,d,e), и я хочу удалить любое значение, как указано ниже.

предположим, я хочу удалить b, тогда запятая (,) должна переместиться, т.е. (a,c,d,e). Пожалуйста, помогите.

Ответы [ 3 ]

2 голосов
/ 19 апреля 2019

Предполагая, что все ваши буквы разделены одной запятой, вы можете использовать комбинацию функций replace и trim.

--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    
1 голос
/ 19 апреля 2019

Вы можете использовать либо replace, либо regex_replace, чтобы достичь того, что вы ожидаете в plsql.

Select replace(MyTable.MyColumn, 'from value', 'to value') as NewValue from MyTable
0 голосов
/ 20 апреля 2019

Я позаимствовал код у Каушика Наяка и добавил regexp_replace, упомянутое Хатибзаде.

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
  )
select 
 trim ( both ',' from replace(','||s||',', ','||r||',' ,',') ) trim_replace,
 regexp_replace(s, '^' || r || ',|,' || r || '$|,' || r, '') regexp_replace
from t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...