0

伙计们,当我们对列进行一些操作时,是否必须使用别名?

例如: 当我尝试通过 rs.getString("col1") 检索结果集时, 从 table1 中选择上层(col1 ),它给出了这个异常COM.ibm.db2.jdbc.DB2Exception: [IBM][JDBC Driver] CLI0611E列名无效。SQLSTATE=S0022

当我将查询更改为:
select upper(col1) as col1 from table1并使用 rs.getString("col1") 时,它工作正常。

那么,当某些功能(例如上,修剪,下)应用于列时,是否必须使用别名?

我正在使用:DB2 8.2,Type 2 驱动程序

谢谢

4

2 回答 2

2

表达式 UPPER(COL1)COL1 不同。

比较一下:

$ db2 "describe select col1 from session.t1"

SQLDA Information

 sqldaid : SQLDA     sqldabc: 1136  sqln: 20  sqld: 1

 Column Information

 sqltype               sqllen  sqlname.data                    sqlname.length
 --------------------  ------  ------------------------------  --------------
 453   CHARACTER           10  COL1                                         4

对此:

$ db2 "describe select upper(col1) from session.t1"

SQLDA Information

 sqldaid : SQLDA     sqldabc: 1136  sqln: 20  sqld: 1

 Column Information

 sqltype               sqllen  sqlname.data                    sqlname.length
 --------------------  ------  ------------------------------  --------------
 453   CHARACTER           10  1                                            1

请注意,每个结果集 (sqlname.data) 中的列名是不相同的。

因此,您必须使用列别名或使用 rs.getString("1")。

于 2009-11-20T18:57:18.353 回答
0

试试rs.getString("upper(col1)")?通常,结果中的列名包括应用于该列的任何函数。否则,您将无法获得以下结果SELECT MIN(col1),MAX(col1) ...

于 2009-11-20T11:19:59.197 回答