当我们对列进行某些操作时,是否必须使用ALIAS?

时间:2009-11-20 11:16:17

标签: exception db2 alias

民间, 当我们对列进行某些操作时,是否必须使用ALIAS?

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

当我将查询更改为:
从table1 选择upper(col1)作为col1并使用rs.getString(“col1”),它工作正常。

所以,当在列上应用了诸如upper,trim,lower之类的函数时,是否必须使用ALIAS

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

由于

2 个答案:

答案 0 :(得分: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”)。

答案 1 :(得分:0)

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

等内容的结果