如图所示,我想把这两个数据的province那一列分别改为甘肃和广东,去掉“|”和前面的数字,这样的记录有31条,我想通过一个sql语句搞定,可以吗?有没有什么通配符可以解决?先谢谢大家了,我明天来看大神的答案oracle sql 通配符

解决方案 »

  1.   

    如果里面只有一个|符号的话 下面这个应该满足了..
    with t1 as
    (
         select '111|广东' c1 from dual union all
         select '113|哈尔滨' c1 from dual union all
         select '222|湖南' c1 from dual union all
         select '333|内蒙古' c1 from dual union all
         select '444|俄罗斯' c1 from dual 
    )select substr(c1,instr(c1,'|')-length(c1)) c1
    from t1      c1
    -----------------------
    1 广东
    2 哈尔滨
    3 湖南
    4 内蒙古
    5 俄罗斯
      

  2.   

    select regexp_replace('123|甘肃', '[[:digit:]|]', ''),
           TRANSLATE('123|甘肃', '0123456789|', ' '),
           regexp_substr('123|甘肃', '[^|]+', 1, 2),
           substr('123|甘肃', instr('123|甘肃', '|') + 1, length('123|甘肃'))
      from dual;
      

  3.   

    SUBSTR(province,instr(province,'|')+1)
      

  4.   

    select substr(province,instr(province,'|')+1) from dual;
      

  5.   

    select substr(province,instr(province,'|')+1) from dual;
    一个字符截取,一个字符索引