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。

UPD。经过一番调查,我可以说错误是由 Java 代码引起的,它试图在一个查询中使用 ';' 执行多个语句 作为分隔符。您应该尝试对多个语句使用 PreparedStatement、addBatch() 和 executeBatch()。

UPD2。这是与 DB2 相关的问题。PostgreSQL,afaik,允许在单个查询中使用多个语句。

于 2012-04-02T08:38:09.460 回答