民间, 当我们对列进行某些操作时,是否必须使用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驱动程序
由于
答案 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) ...