有没有好办法,截取指定字符串?

[复制链接]
查看11 | 回复7 | 2012-10-9 18:16:00 | 显示全部楼层 |阅读模式
我的需求是这样,指定一个字符串,然后以它为开始,截取一段脚本。
比方说我有一个存储过程,里面有多个insert 开头的字段,我想把它截取出来,要求是,截取出insert 开头,到它后面第一个分号的位置,也就是说获得一个完整的DML脚本,我在测试的时候发现攻取insert的位置比较简单,用instr就可以了,获取分号也是如此,但获取当前insert之后第一个分号就不能了。为什么Oracle不提供这样一个函数,专门用来截取一段脚本中的DML脚本。有没有高手,有思路?

回复

使用道具 举报

千问 | 2012-10-9 18:16:00 | 显示全部楼层
你为什么要这么做
回复

使用道具 举报

千问 | 2012-10-9 18:16:00 | 显示全部楼层
select regexp_substr(a, 'insert[^;]*') from dual;复制代码
回复

使用道具 举报

千问 | 2012-10-9 18:16:00 | 显示全部楼层
这样应该更完善一点啊, 后面带了分号
SELECT regexp_substr('insert into test values(b);aaa;aabb;', 'insert[^;]*;')
FROM dual;
回复

使用道具 举报

千问 | 2012-10-9 18:16:00 | 显示全部楼层
riverliu1005 发表于 2012-12-12 10:22
你为什么要这么做

我觉得很有用
回复

使用道具 举报

千问 | 2012-10-9 18:16:00 | 显示全部楼层
udfrog 发表于 2012-12-12 10:45
非常感谢,这个很强大
回复

使用道具 举报

千问 | 2012-10-9 18:16:00 | 显示全部楼层
lhqmccn 发表于 2012-12-12 11:29
这样应该更完善一点啊, 后面带了分号
SELECT regexp_substr('insert into test values(b);aaa;aabb;', 'i ...

太感谢了,问题解决了
回复

使用道具 举报

千问 | 2012-10-9 18:16:00 | 显示全部楼层
非常感谢楼上给的思路,速度提升了好多,原来跑了一晚上,现在几钟就搞定了,呵呵
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行