Oracle SQL - 在不知道列名的情况下选择列

时间:2014-03-19 21:16:44

标签: sql oracle

如果我不知道列的名称,是否可以使用索引或列位置等选择第二列的值?

Select col(2) FROM (
    Select 'a', 'b',' c', 'd' from dual
)

4 个答案:

答案 0 :(得分:5)

有可能吗?当然。您可以编写一个PL / SQL块,使用dbms_sql使用针对dual的实际查询打开游标,描述结果,将变量绑定到您找到第二列的任何内容,从中获取光标,然后循环。这将是一个非常复杂的,通常相当痛苦的过程,但它可以做到。

SQL语言没有定义在静态SQL语句中执行此操作的方法,并且Oracle不提供允许此操作的扩展。但是,如果你知道你想要第二列但不知道该列代表什么,我会非常担心你试图解决的根本问题。在关系数据库中,这不是很有意义的东西。

答案 1 :(得分:3)

SELECT ORDINAL_POSITION, COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'dual'

不确定这是否是您所需要的。

答案 2 :(得分:1)

如果您不知道这个名字,请给它一个好名字;)。

Select b FROM (
    Select 'a', 'b' as b, 'c', 'd' from dual
)

答案 3 :(得分:0)

如果您知道子查询中的列数,则有可能:

web apps : az webapp list --subscription subscriptionId 
function apps: az functionapp list --subscription subscriptionId
logic apps: az logic workflow list --subscription subscriptionId

有限制:

  • 查询难以阅读和理解
  • 你应该知道列数
  • 值不应为 NULL
  • 不推荐用于生产环境