在DB2中按列索引号而不是列名选择

时间:2016-12-12 02:38:04

标签: sql db2

是否可以根据列索引获取列的值? 像下面的sql:

SELECT 
    (SELECT colname 
     FROM syscat.columns 
     WHERE tabname = 'myTable' AND colno=100) AS TEST 
FROM myTable

上面的sql只返回指定索引的列名,而不是实际值。

2 个答案:

答案 0 :(得分:0)

输入SQL。系统需要知道将返回哪种数据类型,因为char(1),整数和BLOB类型之间存在差异。其他人已经指出在内部使用带有动态SQL的stored procedure。但是,即使存储过程也有类型参数。参数的选项是相对通用的,但是那些参数结构附有类型。

对于功能和程序应该起什么作用

  1. 检索列名和数据类型,然后
  2. 准备并执行动态语句以处理函数/过程中的所需列。

答案 1 :(得分:0)

可以使用PureXML:

SELECT 
    XMLQUERY('$X[2]/text()'
        PASSING XMLCONCAT(
            XMLELEMENT(NAME "col1", first),
            XMLELEMENT(NAME "col2", middle),
            XMLELEMENT(NAME "col3", last) 
            --- . . .
            --- and so on
        ) AS "X"
    )
FROM employee

您更改xquery表达式索引号$X[ 2 ]/text()以访问所需列。