日期:2014-05-17  浏览次数:20751 次

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