Não é possível usar uma consulta LIKE em um JDBC PreparedStatement?

O código da consulta e a consulta:

ps = conn.prepareStatement("select instance_id, ? from eam_measurement where resource_id in (select RESOURCE_ID from eam_res_grp_res_map where resource_group_id = ?) and DSN like '?' order by 2");
ps.setString(1,"SUBSTR(DSN,27,16)");
ps.setInt(2,defaultWasGroup);
ps.setString(3,"%Module=jvmRuntimeModule:freeMemory%");
rs = ps.executeQuery();
while (rs.next()) { bla blah blah blah ...

Retorna um vazioResultSet.

Por meio da depuração básica, descobri que é o terceiro vínculo que é o problema, ou seja,

DSN like '?'

Eu tentei todos os tipos de variações, das quais a mais sensata parecia estar usando:

DSN like concat('%',?,'%')

mas isso não funciona, pois estou sentindo falta do' em ambos os lados da string concatenada, então eu tento:

DSN like ' concat('%',Module=P_STAG_JDBC01:poolSize,'%') ' order by 2

mas simplesmente não consigo encontrar uma maneira de obtê-los nesse trabalho.

o que estou perdendo?

questionAnswers(7)

yourAnswerToTheQuestion