Функция SQL - UPPER в DB2 не работает - PullRequest
2 голосов
/ 02 апреля 2012

Я подключаюсь к базе данных DB2 (DB2 v9.7.400.501) из моего веб-приложения Java, используя драйвер IBM DB2 Type 4 (db2jcc4.jar). Когда я пытаюсь выполнить инструкцию 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, поскольку нормальный оператор выбора выполняется нормально.

1 Ответ

3 голосов
/ 02 апреля 2012

Может быть, вы должны использовать это следующим образом:

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

Ваш код с '=', кажется, подходит для SQLite, но не знаю, как насчет db2.

UPD.После некоторого исследования я могу сказать, что ошибка вызвана кодом Java, который пытается выполнить несколько операторов в одном запросе, используя ';'в качестве разделителя.Вам следует попробовать использовать PreparedStatement, addBatch () и executeBatch () для нескольких операторов.

UPD2.Это проблема, связанная с DB2.PostgreSQL, afaik, позволяет использовать несколько операторов в одном запросе.

...