如何将字符串中的数字提取出来

qq_40608182 2017-11-26 08:33:03
已知:
str
按时的撒旦123元(其中含存款11元)
一类似的预存9600元(新势力)

要求如下实现效果:
str num
按时的撒旦123元(其中含存款11元) 123
一类似的预存9600元(新势力) 9600

求大神帮忙解决,在线等!
...全文
544 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
花开了叫我 2017-11-27
  • 打赏
  • 举报
回复
引用 2 楼 qq646748739 的回复:
使用translate将一字符串中的数字提取出来!

--方法1:
with tmp as
(  
select '按时的撒旦123元(其中含存款11元)' name from dual
 union all
select '一类似的预存9600元(新势力)' from dual
)
select name,trim(translate(
                           substr(name,1,instr(name,'元')),
                           translate(substr(name,1,instr(name,'元')),'0123456789',' '),
						   ' '
                          )
                 ) num 
 from tmp;


--方法2:
with tmp as
(  
select '按时的撒旦123元(其中含存款11元)' name from dual
 union all
select '一类似的预存9600元(新势力)' from dual
)
select name, substr(name,1,instr(name,'元')),
                           translate(substr(name,1,instr(name,'元')),'0123456789',' '),
						   ' ',
                   trim(translate(
                           substr(name,1,instr(name,'元')),
                           translate(
                              substr(name,1,instr(name,'元')),
                              '0123456789',
                              ' '),' '
                                      )
                 ) num 
  from tmp;
with tmp as ( select '按时456的撒旦123元(其中含存款11元)' name from dual union all select '一类似的预存9600元(新势力)' from dual ) SELECT name,regexp_substr(NAME,'(\d+)元',1,1,'i','1') FROM tmp; 楼主你有说 '按时456的撒旦123元(其中含存款11元' 请问这个字符串你要取哪段数字?ma
qq_40608182 2017-11-26
  • 打赏
  • 举报
回复
引用 4 楼 qq646748739 的回复:
没问题的话,可以结贴了。
嗯嗯,感谢碧水幽幽泉。
碧水幽幽泉 2017-11-26
  • 打赏
  • 举报
回复
没问题的话,可以结贴了。
qq_40608182 2017-11-26
  • 打赏
  • 举报
回复
引用 2 楼 qq646748739 的回复:
使用translate将一字符串中的数字提取出来!

--方法1:
with tmp as
(  
select '按时的撒旦123元(其中含存款11元)' name from dual
 union all
select '一类似的预存9600元(新势力)' from dual
)
select name,trim(translate(
                           substr(name,1,instr(name,'元')),
                           translate(substr(name,1,instr(name,'元')),'0123456789',' '),
						   ' '
                          )
                 ) num 
 from tmp;


--方法2:
with tmp as
(  
select '按时的撒旦123元(其中含存款11元)' name from dual
 union all
select '一类似的预存9600元(新势力)' from dual
)
select name, substr(name,1,instr(name,'元')),
                           translate(substr(name,1,instr(name,'元')),'0123456789',' '),
						   ' ',
                   trim(translate(
                           substr(name,1,instr(name,'元')),
                           translate(
                              substr(name,1,instr(name,'元')),
                              '0123456789',
                              ' '),' '
                                      )
                 ) num 
  from tmp;
刚运行了下,结果是OK的!
碧水幽幽泉 2017-11-26
  • 打赏
  • 举报
回复
使用translate将一字符串中的数字提取出来!

--方法1:
with tmp as
(  
select '按时的撒旦123元(其中含存款11元)' name from dual
 union all
select '一类似的预存9600元(新势力)' from dual
)
select name,trim(translate(
                           substr(name,1,instr(name,'元')),
                           translate(substr(name,1,instr(name,'元')),'0123456789',' '),
						   ' '
                          )
                 ) num 
 from tmp;


--方法2:
with tmp as
(  
select '按时的撒旦123元(其中含存款11元)' name from dual
 union all
select '一类似的预存9600元(新势力)' from dual
)
select name, substr(name,1,instr(name,'元')),
                           translate(substr(name,1,instr(name,'元')),'0123456789',' '),
						   ' ',
                   trim(translate(
                           substr(name,1,instr(name,'元')),
                           translate(
                              substr(name,1,instr(name,'元')),
                              '0123456789',
                              ' '),' '
                                      )
                 ) num 
  from tmp;
qq_40608182 2017-11-26
  • 打赏
  • 举报
回复
大神在吗? 在线等!

17,086

社区成员

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

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