Я использую PostgreSQL 9.1.4 с hstore и драйвер PostgreSQL JDBC (9.1 -901.jdbc4 ).
Я пытаюсь использовать операторы contains(?
, ?&
,?|
)в PreparedStatement, однако символ ?
анализируется как переменная-заполнитель. Можно ли экранировать этот символ, чтобы отправить правильный оператор в запросе?
Пример:
PreparedStatement stmt = conn.prepareStatement("SELECT a, b FROM table1 WHERE c ? 'foo' AND d = ?");
stmt.setInt(1, dValue);
stmt.executeQuery();
В этой форме следующий пример вызовет исключение:
org.postgresql.util.PSQLException: No value specified for parameter 2.
Обновление:
После изучения синтаксического анализатора запросов в драйвере pgjdbc этот фрагмент , по-видимому, указывает на невозможность экранирования символа ?
. Остаются вопросы:
?
и быть чем-то другим, кроме заполнителя параметра?