如何用xxxx / FR / xxxx代替abcd / FR / efgh

时间:2019-05-23 16:23:13

标签: sql oracle

我有这个varchar:abcd / FR / efgh,我想用xxxx / FR / xxxx替换它 例如:

<tree colors="<color_name>:<condition>">

我知道如何在oracle中做到这一点吗?

1 个答案:

答案 0 :(得分:1)

通过使用多个字符串函数,例如rpadinstrsubstrlength

select 
  case 
    when s not like '%_/%/_%' then s
    else 
      rpad('x', instr(s, '/', 1, 1) - 1, 'x') 
      || '/' || 
      substr(s, instr(s, '/', 1, 1) + 1, instr(s, '/', 1, 2) - instr(s, '/', 1, 1) - 1)
      || '/' ||
      rpad('x', length(s) - instr(s, '/', 1, 2), 'x') 
  end s  
from tablename

用列名替换s
请参见demo
结果:

> | S                |
> | :--------------- |
> | xxxx/FR/xxxx     |
> | xxxxx/BE/xxxxxxx |
> | /BE/as           |