当前位置: 代码迷 >> Oracle面试 >> 怎么获取特定的字符串
  详细解决方案

怎么获取特定的字符串

热度:7618   发布时间:2013-02-26 00:00:00.0
如何获取特定的字符串
我想查V$sql里的sql_text 里的不重复的表名出来,那么如何可以截取到sql语句的表名,sql语句基本上都是select XX from table where xx,那么如何写才可以截取到table资料出来?

------解决方案--------------------------------------------------------
查FROM 和之后第二个空格之间的字符串
然后解析这个字符串

------解决方案--------------------------------------------------------
貌似没啥更好的法。
------解决方案--------------------------------------------------------
如果有子查询那就麻烦大了,
没有的话,就用1楼的了,没有更好的办法了

或者可以根据你表的命名规则来搜索。比如以 't'开头 或者以'cub'开头的表 等
------解决方案--------------------------------------------------------
第二个空格,还是不保险。
到 join 或 where 为止试一下。
------解决方案--------------------------------------------------------
探讨
我想查V$sql里的sql_text 里的不重复的表名出来,那么如何可以截取到sql语句的表名,sql语句基本上都是select XX from table where xx,那么如何写才可以截取到table资料出来?

------解决方案--------------------------------------------------------
1.用正则试试。截取from后面第一个非空字符是不是(,如果不是就截取串。(这个应该会用到connect by)
2.自己写个函数(不需要用connect by)。
sql书写太随意了。分解其元素很麻烦。
------解决方案--------------------------------------------------------
SQL code
select substr(sql_text,instr(sql_text,'from')+5,(instr(sql_text,'where')-(instr(sql_text,'from')))-6) from v$sql where sql_text='select mod(spare2, 256) subparttype from partobj$ where obj# = :1'
  相关解决方案