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

ilovefzq 2013-11-05 05:16:50
如图所示,我想把这两个数据的province那一列分别改为甘肃和广东,去掉“|”和前面的数字,这样的记录有31条,我想通过一个sql语句搞定,可以吗?有没有什么通配符可以解决?先谢谢大家了,我明天来看大神的答案
...全文
284 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ilovefzq 2013-11-06
  • 打赏
  • 举报
回复
谢谢各位了,thank you
Ken-xu 2013-11-06
  • 打赏
  • 举报
回复
select substr(province,instr(province,'|')+1) from dual;
一个字符截取,一个字符索引
  • 打赏
  • 举报
回复
select substr(province,instr(province,'|')+1) from dual;
善若止水 2013-11-05
  • 打赏
  • 举报
回复
SUBSTR(province,instr(province,'|')+1)
NIan_jun 2013-11-05
  • 打赏
  • 举报
回复
引用 2 楼 HJ_daxian 的回复:
如果里面只有一个|符号的话 下面这个应该满足了..

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

这个号,直接把第二个参数变成负的应截取的字符串长度。学习了
NIan_jun 2013-11-05
  • 打赏
  • 举报
回复
select regexp_replace('123|甘肃', '[[:digit:]|]', ''),
       TRANSLATE('123|甘肃', '0123456789|', ' '),
       regexp_substr('123|甘肃', '[^|]+', 1, 2),
       substr('123|甘肃', instr('123|甘肃', '|') + 1, length('123|甘肃'))
  from dual;
  • 打赏
  • 举报
回复
如果里面只有一个|符号的话 下面这个应该满足了..

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

yinan9 2013-11-05
  • 打赏
  • 举报
回复
正则表达式regexp_substr

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧