当前位置: 代码迷 >> Oracle开发 >> 一个sql语句写不出来,请大家伙儿帮帮忙
  详细解决方案

一个sql语句写不出来,请大家伙儿帮帮忙

热度:58   发布时间:2016-04-24 06:48:10.0
一个sql语句写不出来,请大家帮帮忙
如图所示,我想把这两个数据的province那一列分别改为甘肃和广东,去掉“|”和前面的数字,这样的记录有31条,我想通过一个sql语句搞定,可以吗?有没有什么通配符可以解决?先谢谢大家了,我明天来看大神的答案
------解决方案--------------------
正则表达式regexp_substr
------解决方案--------------------
如果里面只有一个
------解决方案--------------------
符号的话 下面这个应该满足了..


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 俄罗斯


------解决方案--------------------
引用:
如果里面只有一个
------解决方案--------------------
符号的话 下面这个应该满足了..


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 俄罗斯



这个号,直接把第二个参数变成负的应截取的字符串长度。学习了
------解决方案--------------------
SUBSTR(province,instr(province,'
------解决方案--------------------
')+1)

------解决方案--------------------
select substr(province,instr(province,'
------解决方案--------------------
')+1) from dual;
------解决方案--------------------
select?substr(province,instr(province,'
------解决方案--------------------
')+1)?from?dual;
一个字符截取,一个字符索引