SQL - DB2中的UPPER函数无法正常工作

时间:2012-04-02 08:00:47

标签: java sql db2 jcc

我使用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语句正常执行。

1 个答案:

答案 0 :(得分:3)

也许你应该这样使用:

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

带有'='的代码对于SQLite似乎没问题,但是不知道关于db2。

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

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