在列上使用函数,然后在Oracle的新列输出中使用另一个函数

时间:2014-04-16 17:15:45

标签: sql oracle substr

我一直试图想出一种方法,我可以使用列上的函数来获取某个输出(在列中),然后另外使用我之前从另一个输出的列上的另一个函数柱。听起来很混乱吧?让我向您展示一个让它更容易理解的例子。

SELECT PAGE, substr(PAGE, 1, instr(PAGE, ';', -1) - 1) PAGE2, substr(PAGE2, instr(PAGE2, '/', -1)+1) PAGE_NEW
FROM 
    SNETP001.INGACCESS_VIEWS INGACCESS_VIEWS,
     SNETP001.INGACCESS_PAGEID INGACCESS_PAGEID

PAGE是表格中的原始列 PAGE2是使用SUBSTR和嵌套INSTR函数创建的列 PAGE_NEW是我想在PAGE2列上运行的附加列。

对此有何想法?如果需要,我可以尝试提供其他信息。

谢谢, 莱恩

1 个答案:

答案 0 :(得分:1)

您可以使用子查询来执行此操作:

Select PAGE, PAGE2, substr(PAGE2, instr(PAGE2, '/', -1)+1) PAGE_NEW
 FROM
 ( SELECT PAGE, substr(PAGE, 1, instr(PAGE, ';', -1) - 1) PAGE2
  FROM 
   SNETP001.INGACCESS_VIEWS INGACCESS_VIEWS,
   SNETP001.INGACCESS_PAGEID INGACCESS_PAGEID)

或者您可以在PAGE列上编写两次substr函数,如下所示:

   SELECT PAGE, substr(PAGE, 1, instr(PAGE, ';', -1) - 1) PAGE2, 
   substr(substr(PAGE,   1, instr(PAGE, ';', -1) - 1),
          instr(substr(PAGE, 1, instr(PAGE, ';', -1) - 1), '/', -1)+1)  PAGE_NEW
   FROM 
     SNETP001.INGACCESS_VIEWS INGACCESS_VIEWS,
     SNETP001.INGACCESS_PAGEID INGACCESS_PAGEID  

希望我在你的请求中没有错过任何内容。

Vishad