2015-04-01 3 views
2

Я хочу перевести этот SQL Access запрос на Java JDBCЯ хочу, чтобы вставить специальный символ SQL в JDBC

Select * From books Where Lcase(title) LIKE Lcase('*jdbc*') AND Lcase(title) LIKE Lcase('*programming*')

Я использую PreparedStatement как этот

String sql1="Select * From books Where Lcase(title) LIKE Lcase(%?%) AND Lcase(title) LIKE Lcase(%?%)"; 
PreparedStatement ps1=con.prepareStatement(sql1); 
ps1.setString(1, "jdbc"); 
ps1.setString(2, "programming"); 
ResultSet rs1=ps1.executeQuery(); 

Но я получаю синтаксическая ошибка

+0

вы можете попробовать этот LCASE ('%%?'). добавьте эти кавычки. любезно предоставите нам журнал ошибок – Ravikiran763

ответ

4

Если вы хотите вставить % в значение, используемое Lcase, у вас есть два варианта:

  • Добавить % с в коде, или
  • Использование конкатенации в запросе.

Первый подход будет выглядеть следующим образом:

String sql1="Select * From books Where Lcase(title) LIKE Lcase(?) AND Lcase(title) LIKE Lcase(?)"; 
PreparedStatement ps1=con.prepareStatement(sql1); 
ps1.setString(1, "%jdbc%"); 
ps1.setString(2, "%programming%"); 

Второй подход будет выглядеть следующим образом:

String sql1="Select * From books Where Lcase(title) LIKE Lcase('%' & ? & '%') AND Lcase(title) LIKE Lcase('%' & ? & '%')"; 
+0

Спасибо, отлично работает –

+0

Хорошо, спасибо за объяснение, я ном на сайте. –

Смежные вопросы