2

IBM DB2 Type 4 ドライバー (db2jcc4.jar) を使用して、Java Web アプリケーションから DB2 データベース (DB2 v9.7.400.501) に接続しています。このようなSQL文を実行しようとすると、

SELECT * FROM USERS WHERE UPPER(USERNAME) = UPPER('testuser');

次の例外が発生します。

com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL エラー: SQLCODE=-104、SQLSTATE=42601、SQLERRMC=;;= UPPER('testuser');END-OF-STATEMENT、DRIVER=4.12.55

UPPER通常の select ステートメントは正常に実行されるため、問題は関数にあります。

4

1 に答える 1

3

多分あなたはこのように使うべきです:

SELECT * FROM USERS WHERE UPPER(USERNAME) LIKE UPPER('testuser');

「=」を使用したコードはSQLiteでは問題ないようですが、db2についてはわかりません。

アップデート。調査の結果、「;」を使用して 1 つのクエリで複数のステートメントを実行しようとする Java コードがエラーの原因であると言えます。区切り文字として。複数のステートメントには、PreparedStatement、addBatch()、および executeBatch() を使用してみてください。

UPD2. これは DB2 関連の問題です。PostgreSQLは、私の知る限り、単一のクエリで複数のステートメントを許可します。

于 2012-04-02T08:38:09.460 に答える