0

皆さん、列に対して何らかの操作を行っているときに ALIAS を使用することは必須ですか?

例: rs.getString("col1") で結果セットを取得しようとしているときに table1 から upper(col1) を選択すると、この例外が発生していましたCOM.ibm.db2.jdbc.DB2Exception: [IBM][JDBC Driver] CLI0611E列名が無効です。SQLSTATE=S0022

クエリを次のように変更すると、
select upper(col1) as col1 from table1を使用し、rs.getString("col1") を使用すると、正常に動作しています。

では、upper、trim、lower などの関数が列に適用されたときに ALIAS を使用することは必須ですか?

使用しています: DB2 8.2、タイプ 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 に答える