从oracle查询中检索所选列

从oracle查询中检索所选列,oracle,oracle11g,oracle11gr2,data-dictionary,Oracle,Oracle11g,Oracle11gr2,Data Dictionary,我需要您的帮助从oracle查询中检索所选列 像 从tab1中选择col1、col2、col3+col4作为col3_4_sum,col5*col6作为col5_6_mul 我想检索以下输出作为 Details ========== Col1 Col2 Col3+Col4 Col5*Col6 不是别名,因为它可以很容易地从dbms_sql.descripe_columns oracle实用程序中检索,有人能推荐一些数据字典来检索它吗 编辑:不同的表单,但我只需要一个最终的输出列 Query 2

我需要您的帮助从oracle查询中检索所选列 像

从tab1中选择col1、col2、col3+col4作为col3_4_sum,col5*col6作为col5_6_mul

我想检索以下输出作为

Details
==========
Col1
Col2
Col3+Col4
Col5*Col6
不是别名,因为它可以很容易地从dbms_sql.descripe_columns oracle实用程序中检索,有人能推荐一些数据字典来检索它吗

编辑:不同的表单,但我只需要一个最终的输出列

Query 2:SELECT col1,col2,col3+col4 as col3_4_sum,col5*col6 as col5_6_mul
 FROM (SELECT col1,col2,col3,col4,col5,col6 FROM tab1)

Query3:WITH tab as (SELECT col1,col2,col3,col4,col5,col6 FROM tab1)
SELECT col1,col2,col3+col4 as col3_4_sum,col5*col6 as col5_6_mul
     FROM tab;

我希望这就是你想要的

SELECT trim(regexp_substr('col1,col2,col3+col4,col5*col6', '[^,]+', 1, LEVEL)) str_2_tab
 FROM dual
CONNECT BY LEVEL <= regexp_count('col1,col2,col3+col4,col5*col6', ',')+1
/
输出相同:

STRING_2_TAB
------------
col1
col2
col3+col4
col5*col6
检查参数和参数的良好资源:
我希望这就是你要找的

SELECT trim(regexp_substr('col1,col2,col3+col4,col5*col6', '[^,]+', 1, LEVEL)) str_2_tab
 FROM dual
CONNECT BY LEVEL <= regexp_count('col1,col2,col3+col4,col5*col6', ',')+1
/
输出相同:

STRING_2_TAB
------------
col1
col2
col3+col4
col5*col6
检查参数和参数的良好资源:

查看REPLACE()函数。这是最简单的方法-用chr(10)替换逗号-新行,您将获得准确的输出。使用REGEXP还有其他方法,等等。。。我想这完全取决于您的需求。@Art:有很多场景,比如With子句,查询正则表达式中的内联视图将是复杂的,您的问题是什么?你的确切要求是什么?这里和网上有很多示例,说明如何将逗号转换为tabe或将行转换为表。我建议最简单的方法。REGEXP也可以这样做。假设在这两种情况下,您的数据总是用逗号分隔。@艺术:问题很简单,我有一个查询,可以用不同的形式编写,就像一个查询可以用“with”子句编写一样,一个查询可以有多个内联视图,但我想获取最终输出的选定列,如何通过简单的正则表达式实现这一点,请您解释一下,因为我不认为它这么简单,我将使用不同的formsgood资源更新这个问题-看看REPLACE()函数。这是最简单的方法-用chr(10)替换逗号-新行,您将获得准确的输出。使用REGEXP还有其他方法,等等。。。我想这完全取决于您的需求。@Art:有很多场景,比如With子句,查询正则表达式中的内联视图将是复杂的,您的问题是什么?你的确切要求是什么?这里和网上有很多示例,说明如何将逗号转换为tabe或将行转换为表。我建议最简单的方法。REGEXP也可以这样做。假设在这两种情况下,您的数据总是用逗号分隔。@艺术:问题很简单,我有一个查询,可以用不同的形式编写,就像一个查询可以用“with”子句编写一样,一个查询可以有多个内联视图,但我想获取最终输出的选定列,你如何通过简单的正则表达式实现这一点,你能解释一下吗,因为我觉得它不是那么简单,我将用不同的formsgood资源更新这个问题-感谢这个解决方案,我在正则表达式方面有专业知识,但我的原始问题仍然是一样的,你如何从查询中只检索输出列,而不是内联视图,请使用查询2和查询3尝试您的解决方案,查询可以是complicated@Stay好奇-我想你不知道你想要什么,甚至无法解释。我在你的问题中使用了你的提问。我的查询与内联视图有什么关系,?你至少需要能够清楚地解释你的问题。至少我试着理解你,但其他人只是忽略了你,这是正确的做法。我试图解释一些事情,但我也没有否决你,我只是想在数据库中找到一些方法,在输出中找到最后的列表达式,如上述问题所述,但查询本身可能非常复杂,我上面提到的例子是,在同一个SQL语句中可以有多个select语句,那么正则表达式将如何找到要选择的语句,这就是为什么我要求提供完全基于Oracle实用程序或数据的解决方案dictionaries@Stay好奇——老实说,投票和分数对我来说并不重要。我是来学习的。但很难理解您想要什么。感谢您的解决方案,我在正则表达式方面有专业知识,但我最初的问题仍然是,如何从查询中仅检索输出列,而不是内联视图,请使用查询2和查询3尝试您的解决方案,查询可以是complicated@Stay好奇-我想你不知道你想要什么,甚至无法解释。我在你的问题中使用了你的提问。我的查询与内联视图有什么关系,?你至少需要能够清楚地解释你的问题。至少我试着理解你,但其他人只是忽略了你,这是正确的做法。我试图解释一些事情,但我也没有否决你,我只是想在数据库中找到一些方法,在输出中找到最后的列表达式,如上述问题所述,但查询本身可能非常复杂,我上面提到的例子是,在同一个SQL语句中可以有多个select语句,那么正则表达式将如何找到要选择的语句,这就是为什么我要求提供完全基于Oracle实用程序或数据的解决方案dictionaries@Stay好奇——老实说,投票和分数对我来说并不重要。我是来学习的。但很难理解你想要什么。