Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DB2中的SQL-UPPER函数不工作_Java_Sql_Db2_Jcc - Fatal编程技术网

Java DB2中的SQL-UPPER函数不工作

Java DB2中的SQL-UPPER函数不工作,java,sql,db2,jcc,Java,Sql,Db2,Jcc,我使用IBMDB2Type4驱动程序(db2jcc4.jar)从JavaWeb应用程序连接到DB2数据库(DB2V9.7.400.501)。当我尝试执行这样的SQL语句时 SELECT * FROM USERS WHERE UPPER(USERNAME) = UPPER('testuser'); 我得到以下例外情况: com.ibm.db2.jcc.am.SqlSyntaxErrorException:db2 SQL错误: SQLCODE=-104,SQLSTATE=42601,SQLERRM

我使用IBMDB2Type4驱动程序(db2jcc4.jar)从JavaWeb应用程序连接到DB2数据库(DB2V9.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== 上限('testuser');语句结束,驱动程序=4.12.55


问题出在
上限
函数上,因为正常的select语句执行正常。

也许您应该这样使用:

SELECT * FROM USERS WHERE UPPER(USERNAME) LIKE UPPER('testuser');
带“=”的代码对于SQLite来说似乎还可以,但不了解db2

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


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

“语句结尾”可能会推断,无论您如何运行它,它都会将第一个单引号解释为字符串的结尾?您可以尝试用两个单引号替换单引号,以测试是否是这样。@Bridge现在我得到一个不同的异常:
com.ibm.db2.jcc.am.SqlSyntaxErrorException:db2 SQL错误:SQLCODE=-104,SQLSTATE=42601,SQLERRMC=testuser;ER(LOGIN)=UPPER(“”;CONCAT,DRIVER=4.12.55
看起来我的猜测是错误的。您是否使用sql工具尝试过相同的语句(最好使用相同的驱动程序通过jdbc)?如果是,它是否会产生相同的错误?是的,我使用Eclipse数据库工具中的同一个驱动程序连接到同一个数据库,并执行了相同的语句。它工作得很好,没有任何区别。我得到了以下异常:
com.ibm.db2.jcc.am.SqlSyntaxErrorException:db2sql错误:SQLCODE=-104,SQLSTATE=42601,SQLERRMC=;;KE UPPER('testuser');语句末尾,DRIVER=4.12.55